Node.js 를 배워보자/3. Node.js 내장 모듈

Node.js 파일 시스템 모듈 (파일 읽기/쓰기, 디렉토리 생성/삭제 )

_Blue_Sky_ 2024. 9. 30. 18:51
728x90
728x90



Node.js 파일 시스템 모듈: 파일 읽기/쓰기, 디렉토리 생성/삭제 심층 분석

서론

Node.js의 파일 시스템 모듈(fs 모듈)은 Node.js 애플리케이션에서 파일 시스템과 상호 작용하는 데 필수적인 역할을 합니다. 이 모듈을 사용하면 파일을 생성, 읽기, 쓰기, 삭제하고, 디렉토리를 생성, 삭제하며, 파일 시스템의 다양한 정보를 얻을 수 있습니다. 이 글에서는 Node.js 파일 시스템 모듈의 기본 개념부터 심화 내용까지 상세하게 다루고, 실제 코드 예제를 통해 이해를 돕고자 합니다.

Node.js 파일 시스템 모듈 소개

Node.js의 파일 시스템 모듈은 fs 모듈로 제공됩니다. 이 모듈은 비동기 방식과 동기 방식 모두 지원하며, 다양한 파일 시스템 작업을 수행할 수 있는 메서드를 제공합니다.

주요 기능:

  • 파일 읽기: 파일의 내용을 읽어와서 문자열이나 버퍼 형태로 반환합니다.
  • 파일 쓰기: 파일을 생성하거나 기존 파일의 내용을 수정합니다.
  • 파일 삭제: 파일을 삭제합니다.
  • 디렉토리 생성: 디렉토리를 생성합니다.
  • 디렉토리 삭제: 디렉토리를 삭제합니다.
  • 파일/디렉토리 정보 조회: 파일이나 디렉토리의 크기, 생성 시간, 수정 시간 등의 정보를 가져옵니다.
  • 파일 시스템 이벤트 감시: 파일 시스템의 변화를 감지하여 이벤트를 발생시킵니다.
728x90

파일 읽기

파일을 읽는 방법에는 여러 가지가 있습니다. 대표적인 방법으로는 fs.readFile() 메서드와 fs.createReadStream() 메서드를 사용하는 방법이 있습니다.

  • fs.readFile() 메서드: 파일 전체를 한 번에 읽어와서 버퍼 형태로 반환합니다. 
    const fs = require('fs');
    
    fs.readFile('data.txt', 'utf8', (err, data) => {
        if (err) {
            console.error(err);
            return;
        }
        console.log(data);
    });
    
     
  • JavaScript
  • fs.createReadStream() 메서드: 파일을 스트림 형태로 읽어와서 데이터를 조금씩 처리할 수 있습니다. 대용량 파일을 처리할 때 유용합니다.
    const fs = require('fs');
    
    const readStream = fs.createReadStream('large_file.txt');
    
    readStream.on('data', (chunk) => {
        console.log(chunk);
    });
    
     

파일 쓰기

파일을 쓰는 방법 역시 fs.writeFile() 메서드와 fs.createWriteStream() 메서드를 사용하는 방법이 있습니다.

  • fs.writeFile() 메서드: 파일 전체를 한 번에 덮어쓰기 합니다.
    const fs = require('fs');
    
    fs.writeFile('data.txt', 'Hello, Node.js!', (err) => {
        if (err) {
            console.error(err);
            return;
        }
        console.log('Data written successfully.');
    });
    
     
  • fs.createWriteStream() 메서드: 파일을 스트림 형태로 쓰기하여 데이터를 조금씩 추가할 수 있습니다.
    const fs = require('fs');
    
    const writeStream = fs.createWriteStream('log.txt');
    
    writeStream.write('Log message 1\n');
    writeStream.write('Log message 2\n');
    writeStream.end();
    
     

디렉토리 생성 및 삭제

  • 디렉토리 생성: fs.mkdir() 메서드를 사용하여 디렉토리를 생성합니다.
    const fs = require('fs');
    
    fs.mkdir('new_directory', (err) => {
        if (err) {
            console.error(err);
            return;
        }
        console.log('Directory created successfully.');
    });
    
     
  • 디렉토리 삭제: fs.rmdir() 메서드를 사용하여 디렉토리를 삭제합니다. 단, 디렉토리가 비어있어야 삭제할 수 있습니다.

 

const fs = require('fs');

fs.rmdir('empty_directory', (err) => {
    if (err) {
        console.error(err);
        return;
    }
    console.log('Directory removed successfully.');
});
 

기타 기능

  • 파일/디렉토리 존재 여부 확인: fs.existsSync() 메서드를 사용하여 파일이나 디렉토리가 존재하는지 확인합니다.
  • 파일/디렉토리 정보 조회: fs.stat() 메서드를 사용하여 파일이나 디렉토리의 크기, 생성 시간, 수정 시간 등의 정보를 가져옵니다.
  • 파일 복사: fs.copyFile() 메서드를 사용하여 파일을 복사합니다.
  • 파일 이동: fs.rename() 메서드를 사용하여 파일의 이름이나 위치를 변경합니다.

결론

Node.js 파일 시스템 모듈은 Node.js 애플리케이션에서 파일 시스템과 상호 작용하는 데 필수적인 도구입니다. 이 글에서는 파일 읽기/쓰기, 디렉토리 생성/삭제 등 파일 시스템 모듈의 주요 기능에 대해 상세하게 알아보았습니다. 실제 개발에서는 비동기 방식을 사용하여 파일 시스템 작업을 수행하는 것이 일반적이며, 에러 처리를 철저히 해야 합니다.

 

728x90
728x90