개발지식/Node.js

[Node.js] fs모듈 - readFile(), readFileSync()

thinktank911 2025. 9. 10. 17:26

 

fs 모듈이란?

FileSystem의 약자로 fs모듈은 Node.js에서 파일 입출력 처리를 할 때 사용한다.

fs 모듈을 사용하기 위해서 require 함수를 활용하거나, ES모듈 사용 시 import/export 방식으로 불러올 수 있다.

다만, ES모듈을 사용하기 위해서는 1. 해당 파일의 확장자를 .mjs로 바꿔주거나 2. package.json에 "type": "module"을 추가해야한다.

const fs = require('fs');
// ES 모듈 사용 시
import fs from 'fs';

 

fs 메서드 중 파일을 읽어들이는 함수로 readFile(비동기 방식)과 readFileSync(동기 방식)가 있는데 비동기 방식을 사용할 때 콜백함수를 호출한다는 차이 외에 사용법은 동일하다.

 

readFileSync() 

// fs.readFileSync('파일경로','options')
// 혹은 fs.readFileSync('파일경로','encoding')
const main_view = fs.readFileSync('./main.html','utf-8');

 

  • 파일 경로 : 파일의 상대경로
  • options: 인코딩 및 플래그를 포함하는 선택적 매개변수, 인코딩에는 데이터 사양이 포함된다. 기본값은 원시 버퍼를 반환하는 null이며 플래그에는 파일의 작업 표시가 포함된다. 기본값은 'r'이다.

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

  • return: 해당 메서드는 파일의 내용을 반환한다.  

 

readFile()

해당 메서드는 전체 파일을 버퍼로 읽는다.

// fs.readFile('파일경로',encoding,callback)
fs.readFile('./img/redRacket.png', function(err, data){
	if(err){
    	console.log(err);
    }
    else{
    	// head 적기 : 상태코드, 요청타입
        response.writeHead(200, {'Content-Type' : 'text/html'});
        // write body. body 적기
        response.write(data);
        // response 종료. 전송바람
        response.end();
    }
})
  • 파일 경로 : 읽을 파일의 이름이나 다른 위치에 저장된 경우, 전체 경로
  • encoding : 파일의 인코딩을 보유. 기본값은 'utf8'이다.
  • callback : 파일을 읽은 후 호출되는 콜백함수 
    • err: 작업에 실패하면 반환되는 오류 (callback함수 첫 번째 인자)
    • data: (성공시) 파일의 내용 (callback함수 두 번째 인자)