프로그래밍/Weekly I Learned

2023.09.21+ node.js 폴더 생성/정리 예제

타코코딩 2023. 9. 21. 16:49

 





제목:사진 폴더정리 script 생성

요구사항

1.동영상(mp4),이미지(png)파일들이 함께 있는 폴더를 각각 동영상과 이미지를 분리하여 관리

2.동영상 파일은 video 폴더에 png 파일은 capture 폴더에 각각 이동하여 정리

const fs = require("fs");
const path = require("path");

const process = require("process");
console.log(process.cwd());

//현재 경로를 workingDir로 설정하여 하위 폴더로 video,capture폴더 생성
//    'c:/dev/node/code/15npm'
// 실행하는명령어의 매개변수를 받아 workinDir 로 설정하여
//하위 폴더로 video,capture 폴더 생성
const workinDir = process.cwd();
const videoDir = path.join(workinDir, "video");
const captureDir = path.join(workinDir, "capture");

if (!fs.existsSync(videoDir)) fs.mkdirSync(videoDir);
if (!fs.existsSync(captureDir)) fs.mkdirSync(captureDir);

//현재 경로의 모든 파일을 읽음
fs.promises
  .readdir(workinDir)
  .then((files) => {
    console.log(files);
    fileCheck(files);
  })
  .catch(console.error);
//파일 체크 후 이동
function fileCheck(files) {
  files.forEach((file) => {
    if (isVideoFile(file)) {
      //video 폴더로 파일 이동시키기
      move(file, videoDir);
      console.log("비디오" + file);
    } else if (isImageFile(file)) {
      //capture 폴더로 이동
      move(file, captureDir);
      console.log("이미지" + file);
    }
  });
}

//파일이동
function move(file, targetDir) {
  //파일이동 경로만들기
  const oldPath = path.join(workinDir, file);
  const newPath = path.join(targetDir, file);
  //파일이동 --> fs.promises.rename(oldPath, newPath)
  fs.promises.rename(oldPath, newPath);
}

//video 파일 여부 체크
function isVideoFile(file) {
  const fileObject = path.parse(file);
  if (fileObject.ext == ".mp4") return true;
}

//img 파일 여부 체큰
function isImageFile(file) {
  const fileObject = path.parse(file);
  if (fileObject.ext == ".png" || fileObject.ext == ".png") return true;
}