Node.js 파일 시스템 다루기
Node.js는 서버측에서 자바스크립트를 실행할 수 있도록 만들어진 런타임으로, 다양한 기능을 제공합니다. 그중에서도 파일 시스템을 다루는 능력은 Node.js의 주요 특징 중 하나입니다. 이 글에서는 Node.js의 파일 시스템 모듈을 활용하여 파일을 생성, 읽기, 수정 및 삭제하는 방법을 알아보겠습니다.
파일 시스템 모듈 소개
Node.js의 파일 시스템을 다루기 위해서는 fs
모듈을 사용해야 합니다. 이 모듈은 기본적으로 파일과 디렉토리를 다루는 다양한 메소드를 제공하여, 물리적인 파일 시스템과 상호작용할 수 있는 기능을 부여합니다.
파일 읽기
파일을 읽기 위해서는 fs.readFile()
메소드를 사용합니다. 이 메소드는 비동기적으로 파일을 읽어들인 후, 콜백 함수를 호출하여 결과를 반환합니다. 예를 들어, 특정 HTML 파일을 읽어들이는 코드는 다음과 같습니다:
var http = require('http');
var fs = require('fs');
http.createServer(function(req, res) {
fs.readFile('demofile1.html', function(err, data) {
res.writeHead(200, {'Content-Type': 'text/html'});
res.write(data);
res.end();
});
}).listen(8080);
위의 코드를 실행 후, http://localhost:8080
에 접속하면 HTML 파일의 내용을 확인할 수 있습니다.
파일 생성
Node.js에서는 여러 가지 방법으로 새로운 파일을 생성할 수 있습니다. fs.appendFile()
메소드를 사용하면 기존 파일에 내용을 추가하거나, 파일이 없을 경우 새로 생성합니다. 다음은 새로운 파일을 만드는 방법입니다:
var fs = require('fs');
fs.appendFile('mynewfile1.txt', 'Hello content!', function(err) {
if (err) throw err;
console.log('Saved!');
});
또한, fs.writeFile()
메소드를 사용하면 파일의 내용을 지정하여 새롭게 생성할 수 있습니다. 이 경우 파일이 이미 존재하면 그 내용을 덮어씁니다:
fs.writeFile('mynewfile2.txt', 'Hello content!', function(err) {
if (err) throw err;
console.log('Saved!');
});
파일 업데이트
기존 파일의 내용을 업데이트하기 위해서는 fs.appendFile()
또는 fs.writeFile()
을 사용할 수 있습니다. fs.appendFile()
은 파일의 끝에 추가 내용을 삽입하며, fs.writeFile()
은 기존 내용을 변경합니다. 다음은 파일을 업데이트하는 예제입니다:
fs.appendFile('mynewfile1.txt', ' - 추가된 내용', function(err) {
if (err) throw err;
console.log('Updated!');
});
파일 삭제
파일을 삭제하고자 할 때는 fs.unlink()
메소드를 사용합니다. 이 메소드는 지정된 파일을 삭제하며, 삭제 완료 후에는 에러가 발생하지 않습니다:
fs.unlink('mynewfile2.txt', function(err) {
if (err) throw err;
console.log('File deleted!');
});
파일 이름 바꾸기
파일의 이름을 변경하려면 fs.rename()
메소드를 사용합니다. 이 메소드는 이전 파일 경로와 새 파일 경로를 인자로 받아 이름 변경을 수행합니다:
fs.rename('mynewfile1.txt', 'renamedfile.txt', function(err) {
if (err) throw err;
console.log('File Renamed!');
});
파일을 스트림으로 읽기
대용량 파일의 경우 fs.createReadStream()
메소드를 사용하여 스트리밍 방식으로 읽을 수 있습니다. 이 방식은 메모리 사용을 최소화하면서도 큰 파일을 효과적으로 처리할 수 있게 합니다:
const readStream = fs.createReadStream('./bigfile.txt');
readStream.on('data', (chunk) => {
console.log('읽어들인 데이터:', chunk);
});
readStream.on('end', () => {
console.log('파일 읽기가 완료되었습니다.');
});
비동기 및 동기 처리
Node.js의 파일 시스템 접근은 비동기 방식으로 동작하여, 작업이 완료될 때까지 기다리지 않고 다음 작업을 수행할 수 있습니다. 하지만 필요에 따라 동기 방식인 fs.readFileSync()
과 fs.writeFileSync()
을 사용할 수도 있습니다. 동기 방식은 호출 순서에 따라 실행되어 코드의 흐름을 보다 이해하기 쉽게 합니다:
const data = fs.readFileSync('./readme.txt');
console.log(data.toString());
결론
Node.js의 파일 시스템 모듈은 파일 및 디렉토리와의 상호작용을 강력하게 지원합니다. 이를 통해 웹 서버에서 동적으로 파일을 생성하고, 읽고, 수정하며, 삭제할 수 있는 기능을 제공합니다. 비동기 방식의 장점을 활용하여 효율적인 파일 처리를 할 수 있으며, 상황에 따라 동기 방식을 선택하여 코드의 가독성을 높일 수 있습니다.
자주 찾으시는 질문 FAQ
Node.js에서 파일을 어떻게 읽을 수 있나요?
Node.js에서는 fs.readFile()
메소드를 사용하여 파일을 비동기적으로 읽을 수 있습니다. 이 메소드는 파일을 읽은 후 콜백 함수를 통해 결과를 반환합니다.
파일을 생성하는 방법은 무엇인가요?
fs.appendFile()
또는 fs.writeFile()
메소드를 이용하면 새로운 파일을 생성할 수 있습니다. 전자는 기존 파일에 내용을 추가하며, 후자는 파일을 새로 생성하거나 기존 파일을 덮어씁니다.
기존 파일을 어떻게 수정하나요?
기존 파일의 내용을 변경하려면 fs.appendFile()
을 통해 끝에 추가하거나 fs.writeFile()
로 내용 전체를 수정할 수 있습니다.
Node.js에서 파일 삭제는 어떻게 하나요?
fs.unlink()
메소드를 사용하여 특정 파일을 삭제할 수 있습니다. 이 메소드는 지정된 파일을 제거하며, 삭제 완료 후에는 에러가 발생하지 않습니다.
0개의 댓글