[node] fs 모듈을 활용한 확장자별 파일 분류

JCH27·2024년 9월 1일
0

node

목록 보기
1/1

node의 fs 모듈을 공부하던 중 파일을 확장자별로 정리하는 스크립트를 작성해보았다.


fs 모듈이란?

fs는 FileSystem의 약자로, fs 모듈은 Node.js에서 파일 입출력 처리를 할 때 사용한다.


스크립트

const fs = require('fs').promises;
const path = require('path');

// 디렉토리의 모든 파일을 읽는 메서드 readdir
fs.readdir(__dirname)
  .then((files) => {

    // 각각의 파일명에 대하여 반복
    files.forEach((file) => {

      // 파일명을 확장자명과 분리한다.
      file = file.split('.');
      
      // 폴더의 경우 file.length 가 1이다
      if(file.length>1){
        // js 파일인 경우는 건너뛴다
        if(file[1]==='js'){
        }else{

          // 확장자명을 폴더명으로 정하기 위한 변수 선언
          const dName = file[1];

          //  폴더가 없다면 폴더를 생성한다.
          const dirPath = path.join(__dirname,file[1]);
          fs.lstat(dirPath)
          .catch((error)=>{
            fs.mkdir(dName).catch((error)=>{return});
          })
          .finally(()=>{
            // 폴더생성이 끝나면
            
            //파일명과 확장자명을 다시 합친다.
            file = file.join('.');

            // 이동시키기 위한 경로 + 파일명 변수를 만든다.
            const destination = path.join(__dirname,dName,file);
            
            // 이동시키기를 원하는 파일의 경로 변수를 만든다.
            const target = path.join(__dirname,file);

            // 이동시킬 파일과 이동될 위치를 설정하여 파일을 이동시킨다.
            fs.rename(target,destination)
            .then(()=>{
              console.log(`${target}${destination}으로 이동!`);
            })
            .catch(console.error);

          })

        }

      }
    })
  })
  .catch(console.error)
  .finally(()=>{
  	// 모든 작업이 끝나면 해당 디렉토리에서 폴더 생성과 파일 이동 완료 콘솔을 출력한다.
    console.log(path.basename(__dirname) + '에서 폴더 생성과 파일 이동이 완료되었습니다.');
  });
profile
포기하지 않는 키보드 워리어

0개의 댓글