Node.js에서 폴더 다루기
Node.js fs
코어 모듈은 폴더 작업을 하는 데 사용할 수 있는 많은 편리한 메서드를 제공합니다.
폴더가 있는지 확인
fs.access()
(및 프로미스 기반 대응 함수인 fsPromises.access()
)를 사용하여 폴더가 있는지 확인하고 Node.js가 해당 권한으로 폴더에 접근할 수 있는지 확인합니다.
const fs = require('node:fs');
try {
await fs.promises.access('/Users/joe');
} catch (err) {
throw err;
}
새 폴더 만들기
fs.mkdir()
또는 fs.mkdirSync()
또는 fsPromises.mkdir()
을 사용하여 새 폴더를 만듭니다.
const fs = require('node:fs');
const folderName = '/Users/joe/test';
try {
fs.mkdirSync(folderName);
} catch (err) {
console.error(err);
}
디렉토리 내용 읽기
fs.readdir()
또는 fs.readdirSync()
또는 fsPromises.readdir()
을 사용하여 디렉토리 내용을 읽습니다.
다음 코드는 폴더의 내용(파일 및 하위 폴더 모두)을 읽고 상대 경로를 반환합니다.
const fs = require('node:fs');
const folderPath = '/Users/joe';
fs.readdirSync(folderPath).map(fileName => {
return path.join(folderPath, fileName);
});
전체 경로를 얻을 수 있습니다.
fs.readdirSync(folderPath)
.map(fileName => path.join(folderPath, fileName));
또한 폴더를 제외하고 파일만 반환하도록 결과를 필터링할 수도 있습니다.
const fs = require('node:fs');
const isFile = fileName => !fileName.includes(path.sep);
fs.readdirSync(folderPath)
.map(fileName => path.join(folderPath, fileName))
.filter(isFile);
폴더 이름 바꾸기
fs.rename()
또는 fs.renameSync()
또는 fsPromises.rename()
을 사용하여 폴더 이름을 바꿉니다. 첫 번째 매개변수는 현재 경로이고 두 번째 매개변수는 새 경로입니다.
const fs = require('node:fs');
fs.rename('/Users/joe', '/Users/roger', err => {
if (err) {
console.error(err);
}
});
fs.renameSync()
는 동기 버전입니다.
const fs = require('node:fs');
try {
fs.renameSync('/Users/joe', '/Users/roger');
} catch (err) {
console.error(err);
}
fsPromises.rename()
는 프로미스 기반 버전입니다.
const fs = require('node:fs/promises');
async function example() {
try {
await fs.rename('/Users/joe', '/Users/roger');
} catch (err) {
console.log(err);
}
}
example();
폴더 삭제하기
폴더를 삭제하려면 fs.rmdir()
또는 fs.rmdirSync()
또는 fsPromises.rmdir()
을 사용하세요.
const fs = require('node:fs');
fs.rmdir(dir, err => {
if (err) {
throw err;
}
console.log(`${dir} is deleted!`);
});
내용물이 있는 폴더를 삭제하려면 fs.rm()
을 { recursive: true }
옵션과 함께 사용하여 내용물을 재귀적으로 제거하세요.
{ recursive: true, force: true }
는 폴더가 존재하지 않는 경우 예외를 무시하도록 만듭니다.
const fs = require('node:fs');
fs.rm(dir, { recursive: true, force: true }, err => {
if (err) {
throw err;
}
console.log(`${dir} is deleted!`);
});