프론트엔드/비동기

fs.readFile

테오구 2021. 10. 19. 00:37
728x90

메소드 fs.readFile 은 로컬에 존재하는 파일을 읽어옵니다.

 

const fs = require("fs");

const getDataFromFilePromise = filePath => {
  return new Promise((resolve, reject) => {
    fs.readFile(filePath, "utf8", function (err, file) {
      if (err) {
        reject(err);
      } else {
        resolve(file);
      }
    });
  });
};

// getDataFromFilePromise('README.md').then(data => console.log(data));

module.exports = {
  getDataFromFilePromise
};

 

fs.readFile(path[, options], callback)

fs.readFile비동기적으로 파일 내용 전체를 읽습니다. 이 메소드를 실행할 때에는 인자 세 개를 넘길 수 있습니다.

 

  • path \<string> | \<Buffer> | \<URL> | \<integer>

path에는 파일 이름을 인자로 넘길 수 있습니다. 일반적으로 문자열(<string>)의 타입으로 넘깁니다.

 

  • options \<Object> | \<string>

대괄호로 감싼 두 번째 인자 options는 넣을 수도 있고, 넣지 않을 수도 있습니다.

 

options는 객체 형태 또는 문자열로 넘길 수 있습니다.

let options = {
  encoding: 'utf8', // UTF-8이라는 인코딩 방식으로 엽니다
  flag: 'r' // 읽기 위해 엽니다
}

// /etc/passed 파일을 옵션을 사용하여 읽습니다.
fs.readFile('/etc/passwd', options, ...)

callback \<Function>

  • err \<Error>
  • data \<string> | \<Buffer>

콜백 함수를 전달합니다. 파일을 읽고 난 후에 비동기적으로 실행되는 함수입니다.

 

콜백 함수에는 두 가지 파라미터가 존재합니다. 에러가 발생하지 않으면 errnull 이 되며, data 에 문자열이나 Buffer 라는 객체가 전달됩니다. data 는 파일의 내용입니다.

 

질문: data 에는 문자열이나 Buffer 가 전달됩니다. 어떤 경우에 문자열로 전달되는 것일까요? 인코딩이 지정되지 않은 경우

 

 

728x90

'프론트엔드 > 비동기' 카테고리의 다른 글

React에서의 데이터 흐름  (0) 2021.10.20
fetch를 이용한 네트워크 요청  (0) 2021.10.15
node.js  (0) 2021.10.15
비동기 호출  (0) 2021.10.14
비동기  (0) 2021.10.14