Node.js 파일 시스템 다루는 법

Node.js 파일 시스템(fs) 모듈에 대한 이해

Node.js는 비동기 이벤트 구동 JavaScript 런타임 환경으로, 주로 서버 사이드 애플리케이션을 개발하는 데에 사용됩니다. 이 과정에서 파일 시스템을 다루는 것은 빈번하게 발생하는 작업입니다. Node.js에서는 fs라는 파일 시스템 모듈을 통해 파일과 디렉토리를 조작할 수 있습니다. 이번 글에서는 Node.js의 fs 모듈을 이용하여 파일을 열고, 읽고, 쓰고, 닫는 방법에 대해 자세히 알아보겠습니다.

파일 열기

파일 시스템에서 파일을 열기 위해서는 fs.open 메소드를 사용합니다. 이 메소드는 파일 경로, 작업의 종류를 나타내는 플래그, 그리고 작업이 완료된 후 호출되는 콜백 함수의 세 가지 매개변수를 받습니다. 파일을 열게 되면, 성공적으로 열렸을 경우 파일 디스크립터를 콜백 함수에서 제공받게 됩니다.

const fs = require('fs');
fs.open('example.txt', 'r', (error, fd) => {
  if (error) throw error;
  console.log('파일이 성공적으로 열렸습니다:', fd);
});

파일 읽기

파일에서 데이터를 읽기 위해서는 fs.read 메소드를 활용합니다. 이 메소드는 파일 디스크립터, 데이터를 저장할 버퍼, 데이터를 쓸 위치, 읽고자 하는 바이트 수와 현재 파일 위치를 매개변수로 받습니다. 아래는 파일을 읽어들이는 예제입니다.

const buffer = Buffer.alloc(1024);
fs.read(fd, buffer, 0, buffer.length, null, (error, bytesRead) => {
  if (error) throw error;
  console.log('읽은 데이터:', buffer.toString());
});

파일 쓰기

파일에 데이터를 기록하려면 fs.write 메소드를 사용합니다. 이 메소드는 파일 디스크립터와 쓸 데이터를 매개변수로 받으며, 작업이 완료되면 콜백 함수가 호출됩니다.

const content = '안녕하세요, Node.js 파일 시스템!';
fs.write(fd, content, (error) => {
  if (error) throw error;
  console.log('파일 쓰기 완료');
});

파일 닫기

모든 파일 작업이 끝난 후에는 반드시 파일을 닫아야 합니다. 이를 위해 fs.close 메소드를 사용하며, 파일 디스크립터와 콜백 함수를 매개변수로 전달합니다.

fs.close(fd, (error) => {
  if (error) throw error;
  console.log('파일이 성공적으로 닫혔습니다.');
});

사용 예제: 파일 읽기 및 쓰기

아래 코드는 파일을 읽고 수정한 후 다시 쓰는 예제를 보여줍니다. 이 예제를 통해 파일의 기존 내용을 유지하면서 새로운 내용을 추가하는 방법을 살펴보겠습니다.

const filePath = 'example.txt';
fs.readFile(filePath, 'utf8', (error, data) => {
  if (error) throw error;
  console.log('기존 데이터:', data);
  const updatedData = data + ' Node.js로 파일 처리하기!'; // 새로운 내용 추가
  fs.writeFile(filePath, updatedData, 'utf8', (error) => {
    if (error) throw error;
    console.log('파일 업데이트 완료');
  });
});

디렉토리 생성 및 삭제

파일 시스템에서는 디렉토리 작업도 중요한 역할을 합니다. 새 디렉토리를 생성하려면 fs.mkdir 메소드를 사용합니다. 이 메소드는 생성할 디렉토리의 경로와 콜백 함수를 매개변수로 받습니다. 다음은 새 디렉토리를 만드는 코드입니다.

fs.mkdir('./newDirectory', (error) => {
  if (error) throw error;
  console.log('새 디렉토리가 생성되었습니다.');
});

반대로, 디렉토리를 삭제하고 싶다면 fs.rmdir 메소드를 사용합니다. 이 메소드는 삭제할 디렉토리의 경로와 콜백 함수를 인자로 받습니다.

fs.rmdir('./newDirectory', (error) => {
  if (error) throw error;
  console.log('디렉토리가 성공적으로 삭제되었습니다.');
});

디렉토리 내 파일 목록 가져오기

특정 디렉토리 내의 파일 목록을 확인하려면 fs.readdir 메소드를 사용합니다. 이 메소드는 디렉토리 경로와 파일 목록을 가져오는 콜백 함수를 매개변수로 받습니다.

fs.readdir('./someDirectory', (error, files) => {
  if (error) throw error;
  console.log('디렉토리 내 파일 목록:', files);
});

마무리

Node.js의 fs 모듈을 사용하면 파일과 디렉토리를 손쉽게 다룰 수 있습니다. 제공하는 함수들을 통해 파일을 읽고, 쓰고, 생성 및 삭제하는 작업을 효율적으로 수행할 수 있습니다. 이러한 파일 시스템 작업은 서버 사이드 애플리케이션을 개발하는데 필수적인 요소이며, 각 메소드의 올바른 사용법을 익히는 것이 중요합니다. 이 글을 통해 Node.js의 파일 시스템을 이해하는 데 도움이 되셨기를 바랍니다.

자주 찾으시는 질문 FAQ

Node.js에서 파일을 여는 방법은 무엇인가요?

Node.js에서 파일을 여는 과정은 fs.open 메소드를 사용하는 것입니다. 이 메소드는 파일 경로와 열기 설정을 지정하고, 작업 완료 후 호출되는 콜백을 통해 결과를 확인할 수 있습니다.

파일에서 데이터를 읽으려면 어떻게 해야 하나요?

파일의 내용을 읽고 싶다면, fs.read 메소드를 활용하면 됩니다. 이 메소드는 파일 디스크립터와 읽을 데이터를 저장할 버퍼 등의 매개변수를 사용하여 파일로부터 데이터를 가져옵니다.

파일을 작성하거나 수정하는 과정은 어떻게 진행되나요?

파일에 내용을 추가하거나 변경할 때는 fs.write 메소드를 사용합니다. 이 메소드는 데이터를 기록할 파일 디스크립터와 내용을 인자로 받아, 작업이 완료되면 콜백을 통해 결과를 확인할 수 있습니다.

댓글 달기

이메일 주소는 공개되지 않습니다. 필수 필드는 *로 표시됩니다

위로 스크롤