본문 바로가기
서버/Node.js

Fs 모듈 (File System Module)

by whale in milktea 2023. 3. 3.

 Module이란?

객체의 수가 방대해짐에 따라 이를 관리하기 위한 파일 관리 툴들을 통칭하는 말이다.

이러한 모듈들은 컴포넌트/함수 내부가 아닌 외부에 파일 별도로 두고 관리한다.

 

만약, 몇 개의 객체로 구성된 데이터를 다룬다면 제어하고자 하는 파일 안에서 해당 데이터를 다뤄도 큰 차이가 없지만

수십/수백개의 데이터와 함께 데이터 내부에 재귀/제어함수가 포함된 데이터를 다룬다면 자바스크립트 혹은 리액트에서 렌더링하고 읽어들이는데 불필요한 자원을 소모하게 된다.

 

이로 인해 데이터 파일과 제어하고자 하는 파일을 분리하여 Node.js를 통해 데이터를 필요할 때마다 주고 받게 함으로 불필요한 자원 소모를 줄이는 작업이 필요하게 되었다.

Node.js 모듈 : 내장 메서드

Node.js에서 제공하는 모듈은 그저 파일끼리 데이터를 주고 받는 형식을 넘어 필요한 상황에 맞게 데이터의 형식 및 내용을 바꿔주는 "내장메서드"를 제공한다. Node.js의 내장 메서드는 종류가 너무 다양하기에 그때그때 필요한 모듈 및 메서드를 불러와 사용하게 된다.

(물론 아는만큼.. Node.js 모듈 관련 공식 문서 : https://nodejs.org/dist/latest-v16.x/docs/api/)

 

기본 사용법은 다음과 같다.

const fs = require('fs'); // fs 모듈을 불러와 사용할거야!
const dns = require('dns'); // DNS 모듈을 불러와 사용할거야!

이 외에도, Node.js에서 제공하는 모듈 외에 더 유용한 메서드가 있는 3rd-party Module이 있다면 그 또한 불러와서 사용할 수 있다.

npm install underscore
# node package manager야,
# 특정 메서드를 제공하는 npm install underscore라는 모듈을 설치해줘!

fs 모듈 (File System Module)

fs모듈은 Node.js에서 제공하는 내장 모듈로, 로컬에 있는 파일을 읽고 저장할 때 사용한다.

이 때, fs 모듈을 전달받기 위해 사용하는 메서드는 fs.readfile이라는 메서드이다.

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

fs.readFile은 총 3개의 전달인자를 전달받게 되는데,

path는 파일의 경로 및 파일의 이름을 전달하게 되고

option에는 파일을 인코딩할 형식을 명시하게 된다. ([options]이기에, 넣지 않으면 자동으로 기본 형식은 utf8 형식으로 읽어온다.)

마지막으로 callback에서는 비동기적으로 처리된 데이터를 최종적으로 어떻게 처리할지 관리하는 콜백함수를 전달받게 된다.

 

다음은 fs.readfile을 활용한 실제 예제이다.

/data 폴더에 있는 lecture라는 데이터가 필요해서 읽어오기 위한 과정이다.

 

const fs = require("fs");
// 이 파일에서 fs 모듈을 사용할거야!

fs.readFile('/data/lecture', 'utf8', (err, data) => {
	if (err) {
    throw err;
  }
  console.log(data);
});

// 첫번째 인자에 경로 및 파일 이름을 명시하고
// 두번째 전달인자에 인코딩 방식은 utf8을 명시한 뒤
// 마지막 인자에 비동기적으로 처리된 데이터를 어떻게 처리할 지 명시한다.

// 만약에 에러가 발생한다면 ===> 에러를 던지고
// 정상적으로 데이터를 읽어왔다면 ===> console에 data를 출력한다.