Node.js에서
fs
모듈은 파일 시스템과 상호작용할 수 있는 기능을 제공하는 기본 모듈입니다. 이를 사용하면 파일을 읽고, 쓰고, 삭제하는 등의 다양한 파일 관련 작업을 수행할 수 있습니다.
fs.readFile(path[, options], callback)
: 파일을 비동기적으로 읽습니다.fs.readFileSync(path[, options])
: 파일을 동기적으로 읽습니다.const fs = require('fs');
// 비동기 방식
fs.readFile('example.txt', 'utf8', (err, data) => {
if (err) {
console.error(err);
return;
}
console.log(data);
});
// 동기 방식
const data = fs.readFileSync('example.txt', 'utf8');
console.log(data);
💡 Promise 방식
fs.promises
: Promise 기반이므로 try
/catch
, async
/await
구문을 활용해 더 직관적이고 간결하게 작성할 수 있습니다.const fs = require('fs').promises;
fs.readFile('example.txt', 'utf8')
.then(data => {
console.log(data);
})
.catch(err => console.error(err));
const fs = require("fs").promises;
(async () => {
try {
const data = await fs.readFile("example.txt", "utf8");
console.log(data);
} catch (err) {
console.log(err);
}
})();
fs.writeFile(file, data[, options], callback)
: 파일을 비동기적으로 씁니다. 파일이 존재하지 않으면 새로 만듭니다.fs.writeFileSync(file, data[, options])
: 파일을 동기적으로 씁니다.const fs = require("fs");
// 비동기 방식
fs.writeFile('example.txt', 'Hello, Node.js!', (err, data) => {
if (err) {
console.error(err);
}
});
// 동기 방식
fs.writeFileSync('example.txt', 'Hello, Node.js!');
fs.unlink()
: 비동기적으로 파일을 삭제합니다.fs.unlinkSync()
: 동기적으로 파일을 삭제합니다.const fs = require("fs");
// 비동기 방식
fs.unlink('example.txt', (err, data) => {
if (err) {
console.error(err);
}
});
// 동기 방식
fs.unlinkSync('example.txt');
fs.existsSync(path, callback)
: 파일이나 디렉토리가 존재하는지 동기적으로 확인합니다.fs.stat(path)
: 파일의 상태(정보)를 비동기적으로 가져옵니다.const fs = require('fs');
const path = 'example.txt';
if (fs.existsSync(path)) {
console.log(`${path} 파일이 존재합니다.`);
} else {
console.log(`${path} 파일이 존재하지 않습니다.`);
const fs = require('fs');
fs.stat('example.txt', (err, stats) => {
if (err) {
console.error('파일이나 디렉토리를 찾을 수 없습니다.');
return;
}
console.log(`파일 크기: ${stats.size} bytes`);
console.log(`파일 생성 시간: ${stats.birthtime}`);
console.log(`Is it a file? ${stats.isFile()}`);
console.log(`Is it a directory? ${stats.isDirectory()}`);
});
fs.mkdir(path[, options], callback)
: 디렉토리를 비동기적으로 생성합니다.fs.mkdirSync(path[, options])
: 디렉토리를 동기적으로 생성합니다.const fs = require('fs');
fs.mkdir('newDir', { recursive: true }, (err) => {
if (err) {
console.error('디렉토리를 생성하는 중 오류가 발생했습니다:', err);
return;
}
console.log('디렉토리가 성공적으로 생성되었습니다.');
});
const fs = require('fs');
try {
fs.mkdirSync('newDirSync', { recursive: true });
console.log('디렉토리가 성공적으로 동기적으로 생성되었습니다.');
} catch (err) {
console.error('디렉토리 생성 중 오류 발생:', err);
}
이외 자세한 내용은 https://nodejs.org/api/fs.html 를 참고해주세요.