티스토리 뷰

Node.js의 'fs'모듈을 활용해서 파일 I/O작업을 구현할 수 있다. fs모듈의 메서드는 동기식일 수도 있고 비동기식일 수도 있다. 비동기 함수에는 비동기 함수의 완료를 나타내는 마지막 매개변수로 콜백함수가 있다. 

readFileSync(동기)와 readFile(비동기) 메소드는 비동기식 메소드가 콜백함수가 존재하는 점을 제외하고는 구현방식이 동일하다. 

 

🍕readFileSync()

fs.readFileSync(path, options)
//혹은 간단하게 readFileSync("파일경로", "encoding");
  • file: 텍스트 파일의 상대 경로를 사용한다. 경로는 URL유형일 수 있다. 파일은 파일 설명자일 수도 있다.
  • 두 파일이 같은 폴더에 있는 경우 파일 이름을 따옴표로 묶는다. 
  • options: 인코딩 및 플래그를 포함하는 선택적 매개변수, 인코딩에는 데이터 사양이 포함된다. 기본값은 원시 버퍼를 반환하는 null이며 플래그에는 파일의 작업 표시가 포함된다. 기본값은 'r'이다.
  • return: 해당 메서드는 파일의 내용을 반환한다.  
const fs = require('fs');
// 기본 문법: fs.readFileSync(path, options)
const data = fs.readFileSync('example.txt');
console.log(data); // <Buffer 68 65 6c 6c 6f>

-> 인코딩 옵션을 넣지 않으면 Buffer 객체(바이너리 데이터)를 반환하기 때문에 utf-8 인코딩 옵션을 넣어줘야 합니다.

const data = fs.readFileSync('example.txt', {encoding:'utf8',flag:'r'});
console.log(data); // hello

 

혹은 간단하게 표현도 가능합니다. readFileSync("파일경로", "encoding");

const data = fs.readFileSync('example.txt', 'utf-8');
console.log(data); // hello

 

🍕readFile() 

fs.readFile()메서드는 파일을 읽는데 사용되는 내장 메서드이다. 해당 메서드는 전체 파일을 버퍼로 읽습니다. 

fs.readFile(filename,encoding,callback)
  • filename: 읽을 파일의 이름이나 다른 위치에 저장된 경우, 전체 경로
  • encoding: 파일의 인코딩을 보유. 기본값은 'utf8'이다.
  • callback: 파일을 읽은 후 호출되는 콜백함수 
    • err: 작업에 실패하면 반환되는 오류 (callback함수 첫 번째 인자)
    • data: (성공시) 파일의 내용 (callback함수 두 번째 인자)

사용방법

-동기식 readFileSync와 다르게 readFile메소드는 비동기식으로 동작함으로써 콜백함수로 메소드의 결과를 받아볼 수 있습니다. 콜백함수의 첫번째 param인 err를 통해 에러 내용을 확인하고 데이터를 성공적으로 가져왔다면 두 번째 param인 data를 통해 파일 내용을 읽어올 수 있습니다. 

const fs = require('fs');

fs.readFile('example1.txt','utf8',(err, data)=>{
if(err){
 console.log(err);
}
}else{
console.log(data);
}
})
댓글