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
메소드를 사용합니다. 이 메소드는 데이터를 기록할 파일 디스크립터와 내용을 인자로 받아, 작업이 완료되면 콜백을 통해 결과를 확인할 수 있습니다.