file system module

Jinsung·2022년 11월 19일

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);
    }
}
  • 비동기함수는 callback 함수의 매개변수로 에러 번호(err)와 읽어들인 데이터(data)를 전달
    해주므로 try-catch 구문이 필요없다.

0개의 댓글