클라이언트 측에서는 파일 입출력이 불가능합니다
일반적인 브라우저 환경에서 실행되는 자바스크립트(JavaScript)는 보안 정책상 클라이언트 측에서 파일 시스템에 직접 접근하여 파일을 읽거나 쓸 수 없습니다. 대신 서버 측 환경인 Node.js에서 제공하는 fs(File System) 모듈을 사용하면 파일 입출력 작업을 손쉽게 처리할 수 있습니다.
fs 모듈은 동기(Sync) 방식과 비동기(Async) 방식의 함수를 모두 제공하며, 이를 통해 파일 생성, 읽기, 쓰기 등 다양한 파일 시스템 작업을 수행할 수 있습니다.
파일 쓰기 및 읽기 예제
먼저 main.js라는 이름의 자바스크립트 파일을 만들고 아래와 같은 코드를 작성해 보겠습니다.
var fs = require("fs");
console.log("Going to write into existing file");
// input.txt라는 파일을 열어 'Simply Easy Learning!'을 기록합니다.
fs.writeFile('input.txt', 'Simply Easy Learning!', function(err) {
if (err) {
return console.error(err);
}
console.log("Data written successfully!");
console.log("Let's read newly written data");
// 방금 작성한 파일을 읽어 전체 내용을 콘솔에 출력합니다.
fs.readFile('input.txt', function (err, data) {
if (err) {
return console.error(err);
}
console.log("Asynchronous read: " + data.toString());
});
});코드 실행하기
작성한 main.js 파일을 실행하여 결과를 확인해 보겠습니다.
$ node main.js
실행 결과
Going to write into existing file Data written successfully! Let's read newly written data Asynchronous read: Simply Easy Learning!
핵심 포인트 정리
- fs.writeFile(): 지정한 파일에 데이터를 비동기적으로 기록하며, 파일이 존재하지 않으면 새로 생성합니다.
- fs.readFile(): 지정한 파일의 내용을 비동기적으로 읽어옵니다.
- 콜백 함수의 첫 번째 매개변수
err를 통해 오류 발생 여부를 확인하고 적절히 처리할 수 있습니다.
Node.js의 fs 모듈 동작 원리와 더 많은 사용법은 공식 튜토리얼 문서에서 확인할 수 있습니다.