Node.js에서 특정 경로에 폴더가 없으면 폴더를 생성하고 파일을 저장하는 방법

작성일 :

Node.js에서 특정 경로에 폴더가 없으면 폴더를 생성하고 파일을 저장하는 방법

Node.js에서 특정 경로에 폴더가 없으면 폴더를 생성하고 파일을 저장하는 방법

Node.js를 사용하다 보면 파일을 특정 경로에 저장해야 하는 경우가 많습니다. 이때, 해당 경로에 폴더가 없을 경우 폴더를 생성하고 파일을 저장해야 할 때가 있습니다. 이번 포스트에서는 이런 상황을 처리하는 방법을 자세히 설명하겠습니다.

1. fs 모듈 소개

Node.js에서는 파일 시스템과 상호작용하기 위해 기본적으로 제공되는 fs 모듈을 사용합니다. 이 모듈을 사용하면 파일을 읽고 쓰고, 디렉토리를 생성하고 삭제하는 등 다양한 작업을 수행할 수 있습니다.

2. 폴더 생성 및 파일 저장 로직 구현

우선, 필요한 모듈을 가져오고 기본적인 함수 구조를 정의합니다. 아래 코드를 참고하세요:

jsx
const fs = require('fs');
const path = require('path');

function saveFile(directory, filename, content) {
    const dirPath = path.resolve(directory);
    const filePath = path.join(dirPath, filename);

fs 모듈과 path 모듈을 가져온 후, saveFile 함수를 정의합니다. 이 함수는 directory, filename, content 세 가지 매개변수를 받습니다. directory는 파일이 저장될 경로, filename은 저장될 파일 이름, content는 파일에 저장될 내용입니다.

3. 폴더 존재 여부 확인 및 생성

다음으로, 지정한 경로에 폴더가 존재하는지 확인하고, 존재하지 않으면 폴더를 생성하는 로직을 추가합니다:

jsx
// 디렉토리가 없으면 생성
if (!fs.existsSync(dirPath)) {
  fs.mkdirSync(dirPath, { recursive: true });
}

fs.existsSync 함수를 사용하여 디렉토리가 존재하는지 확인합니다. 존재하지 않으면 fs.mkdirSync 함수를 사용하여 디렉토리를 생성합니다. { recursive: true } 옵션을 사용하면 중첩된 폴더들도 한 번에 생성할 수 있습니다.

4. 파일 저장

폴더가 존재하는지 확인하고 필요한 경우 생성한 후, 이제 파일을 저장합니다:

jsx
    // 파일 저장
    fs.writeFileSync(filePath, content, 'utf8');
}

fs.writeFileSync 함수를 사용하여 지정된 경로에 파일을 저장합니다. 여기서 utf8 인코딩을 사용하여 파일 내용을 저장합니다.

5. 사용 예시

이제 완성된 saveFile 함수를 사용하여 파일을 저장하는 예제를 보겠습니다:

jsx
// 사용 예시
const directory = "./some/folder/path";
const filename = "example.txt";
const content = "Hello, world!";

saveFile(directory, filename, content);
console.log(`File saved to ${directory}/${filename}`);

위 예제에서는 ./some/folder/path 경로에 example.txt 파일을 생성하고 Hello, world!라는 내용을 저장합니다. 해당 경로에 폴더가 없을 경우 자동으로 생성한 후 파일을 저장합니다.

결론

Node.js를 사용하여 파일을 저장할 때, 경로에 폴더가 없으면 폴더를 생성하고 파일을 저장하는 방법에 대해 알아보았습니다. fs 모듈을 활용하면 이러한 작업을 쉽게 처리할 수 있습니다. 위 코드를 참고하여 자신의 프로젝트에 적용해 보세요. 이를 통해 파일 시스템을 보다 효율적으로 관리할 수 있을 것입니다.