SERVER/Node.js

fs모듈 파일 읽기, 쓰기, 예외처리

완자✨ 2021. 10. 25. 00:34

fs모듈 파일 읽기, 쓰기, 예외처리

파일 읽기

  • fs.readFile(filename, [options], callback)

filename의 파일을 [options]의 방식으로 읽은 후 callback으로 전달된 함수를 호출합니다. (비동기적)

  • fs.readFileSync(filename, [options])

filename의 파일을 [options]의 방식으로 읽은 후 문자열을 반환합니다. (동기적)

Sync가 붙은 것은 동기적 읽기, 붙지 않은 것은 비동기적 읽기입니다. 파일을 읽는데 시간이 오래 걸릴 수도 있습니다. 동기적 읽기로 읽게 되면 파일을 읽으면서 다른 작업을 동시에 할 수 없습니다. 하지만 비동기적으로 읽으면 파일을 읽으면서 다른 작업도 동시에 수행할 수 있고 파일을 다 읽으면 매개변수 callback으로 전달한 함수가 호출됩니다.

[options]에는 보통 인코딩 방식이 오게 되며 웹에서는 utf8을 주로 사용합니다.

파일 쓰기

  • fs.writeFile(filename, data, [options], callback)

filename의 파일에 [options]의 방식으로 data 내용을 쓴 후 callback 함수를 호출합니다. (비동기적)

  • fs.writeFileSync(filename, data, [options])

filename의 파일에 [options]의 방식으로 data 내용을 씁니다. (동기적)

사용법이나 동기적/비동기적 차이는 파일 읽기 메소드와 비슷합니다.

예외 처리

파일 입출력은 매우 다양한 원인으로 예외가 발생할 수 있습니다. 권한이 없다거나 존재하지 않는 파일을 읽는다거나 심지어 하드디스크 용량을 초과할 수도 있습니다. 동기적인 방식과 비동기적인 방식에서 예외를 처리하는 방법이 조금 다르므로 따로 알아보겠습니다.

1. 동기적 방식의 예외처리

동기적 방식에서는 자바스크립트의 일반적인 예외처리 방식인 try ~ catch 구문으로 처리합니다.

var fs = require('fs');

// 파일 읽기
try {
    // 존재하지 않는 파일을 읽으려 합니다.
    var data = fs.readFileSync('nonExist.txt', 'utf8');
    console.log(data);
}
catch(err) {
    console.log(err);
}

2. 비동기적 방식의 예외처리

비동기적 방식에서 예외가 발생하면 callback 함수의 매개변수 err에 전달되므로 따로 try ~ catch 구문을 사용할 필요가 없습니다.

var fs = require('fs');

// 파일 읽기
// 존재하지 않는 파일을 읽으려 합니다.
fs.readFile('nonExist.txt', 'utf8', function(err, data) {
    if(err) {
        // 파일 읽기 실패
        console.log(err);
    }
    else {
        // 파일 읽기 성공
        console.log(data);
    }
});

'SERVER > Node.js' 카테고리의 다른 글

미들웨어 body-parser& compression (압축)  (0) 2021.11.26
Express 란?  (0) 2021.11.26
POST data 받아오기  (0) 2021.10.25
fs.unlink (파일 삭제)  (0) 2021.10.25
fs.readir (파일목록 가져오기)  (0) 2021.10.25