[Node.js] 내장 모듈 - fs

Main·2024년 9월 27일
0

Node.js

목록 보기
7/20
post-thumbnail

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 를 참고해주세요.

profile
함께 개선하는 프론트엔드 개발자

0개의 댓글