본문으로 바로가기

파일 읽기

category Node.js 2020. 12. 15. 19:53

fs

파일 읽기는 node.js에서 제공해주는 모듈인 fs를 이용하면 매우 쉽다

const fs = require('fs');

fs.readFile('path','option', callback(err,data));

의 형태로 사용할 수 있는데 간단하게 사용해보면

fs.readFile('hello.txt', 'utf8', ((err, data) => {
  console.log(data);
}

로 hello.txt에 들어있는 텍스트 내용을 출력할 수 있다

이 데이터를 화면에 뿌리고 싶을 때는

const fs = require('fs');
const http = require('http');

http.createServer(((req, res) => {

  res.writeHead(200);

  fs.readFile('hello.txt', ((err, data) => {
    res.end(data);
  }));

})).listen(3000);

readFile의 콜백함수 안에서 응답을 종료해줘야된다

나는 처음에

fs.readFile('hello.txt', ((err, data) => {
  res.write(data);
}));

res.end();

이렇게 짜고 왜 안되지? 똑같이 했는데? 라고 무식하게 머리 뜯고 있다가

console.log(data)는 제대로 나오는데 화면에 출력하는 것만 안되서 의아했는데

비동기적으로 작동한다는 걸 알고 무릎을 탁 쳤다

readFile의 콜백이 비동기적으로 방식하기 때문에 res.end()후에 데이터를 화면에 뿌리는데

이미 응답이 종료되고 나서 res에 접근하기 때문에 에러가 나고 있던 것

찾아보면서 알게된건데 노드에선 대부분의 비동기 메소드들을 동기방식과 함께 제공하고 있다고 한다

뒤에 Sync만 붙여주면되는데

const data = fs.readFileSync('hello.txt','utf8');
res.write(data);
res.end();

처럼 사용이 가능하다

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

웹 서버 실행  (0) 2020.12.14
require  (0) 2020.10.29