Node.js의 파일 시스템 모듈은 컴퓨터에 있는 파일 시스템이 작동하게 한다. 파일의 생성, 삭제, 읽기, 쓰기 등을 수행할 수 있으며, 폴더를 생성하고 삭제한다.
파일 시스템 모듈 fs를 require로 불러서 사용
const fs = require('fs')
공식문서 : https://nodejs.org/docs/latest-v14.x/api/fs.html
const fs = require('fs')
const directory = "./sample/example"
// existsSync로 파일 존재 여부를 블린으로 확인
// 해당 디렉토리가 없을시 mkdir 이용해서 생성
// recursive는 여러개의 디렉터리를 동시에 생성해 주는 옵션
// **fs.mkdirSync**라는 명령어도 있다
if(!fs.existsSync(directory)){
fs.mkdir(directory, {recursive:true});
}
node.js에서는 xxxxSync 라는 함수를 사용하면 callback으로 사용하지 않고 또는 promise로 변환하지 않아도 사용할 수 있어서 편하지만 비동기 방식이 아닌 동기 방식이라 코드가 블락돼서 응답이 멈출 수 있다. 또는 성능이 느려질 수 있다.
옵션에는 인코딩(utf8, base64 등등)
<동기함수>
fs.readFileSync(filename, [option]);
<비동기함수>
fs.readFileSync(filename, [option], callback);
예시
var fs = require('fs');
var text = fs.readFileSync('file.txt', 'utf8'); //동기
console.log(text);
fs.readFile('file.txt', 'utf-8', function(err,text){ //비동기
console.log(text);
});
<동기함수>
fs.writeFileSync(filename, data, [option]);
<비동기함수>
fs.writeFile(filename, data, [option], callback);
예시 및 예외 처리
//동기
var fs = require('fs');
try{
var text = fs.readFileSync("html.txt", "utf8");
console.log(text);
}catch(err){
console.log(err);
}
//비동기
var fs = require('fs');
fs.readFile('nonExist.txt', 'utf8', function(err, data) {
if(err){
console.log("파일 읽기 실패");
}else{
console.log(data);
}
}