WEB/🌳 Node.js

[Node.js] 6. fs 모듈 (파일 읽기, 쓰기, 편집, 제거)

무딘붓 2022. 7. 29. 21:43

fs모듈

 

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

 

fs 모듈을 불러오기 위해 다음 코드를 작성한다.

// 1. CommonJS Modules
const fs = require("fs");
// 2. ES Modules
import fs from "fs";

지난번에 Node.js를 공부하면서 (링크) 모듈을 불러오는 방법으로 require 함수를 배워서 글을 작성했는데,

ES6(ES2015) 부터는 import / export 라는 방식으로 모듈을 불러올 수 있다. import/export는 require 와는 다르게 모듈의 특정 부분만 불러올 수 있다는 장점이 있다.

 

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

해당 내용은 다음 링크를 참조하자.

https://www.daleseo.com/js-node-es-modules/

 

Node.js에서 ES 모듈(import/export) 사용하기

Engineering Blog by Dale Seo

www.daleseo.com

 


1. 파일 읽기 - readFile

 

fs.readFile('경로', 'utf8', callback); 		// 비동기
fs.readFileSync('경로');  // => <data>		// 동기

fs모듈에서 파일을 읽어들이는 함수로는 readFile()과 readFileSync()가 있다. "Sync"가 붙은것이 동기버전이다.

 

실행 예시를 확인하기 위해 js파일이 있는 폴더에 test.txt 파일을 만들고 "안녕 세상!"이라는 내용을 저장한 다음, 아래 소스코드를 입력하고 실행해보자.

const fs = require("fs");

fs.readFile('./test.txt', 'utf8', (err, data) => {
    console.log(data+"(1)");
});

var data = fs.readFileSync('./test.txt', "utf8");
console.log(data+"(2)");

출력의 순서가 위와같이 나오는 이유는 동기와 비동기에 대해 다룬 이전 글을 참고하자.


2. 파일 쓰기 - writeFile

fs.writeFile(경로, data, [options], callback) 	// 비동기
fs.writeFileSync(경로, data, [options])     	// 동기

fs.writeFileSync()는 filename의 파일에 [options]의 방식으로 data 내용을 쓴다. 

여기서 writeFile() 은 data 내용을 쓰고 callback함수를 호출하는 비동기적 실행이다.

 

<사용예시>

const fs = require("fs");

fs.writeFile('./test.txt', "수정합니다.", (err) => {
    fs.readFile('./test.txt', 'utf8', (err, data) => {
        console.log(data);
    });
})
const fs = require("fs");

fs.writeFileSync('./test.txt', "수정합니다.");
var data = fs.readFileSync('./test.txt', "utf8");
console.log(data);

3. 파일 이름 수정 - rename

fs.rename(oldPath, newPath, callback)
fs.renameSync(oldPath, newPath)

4. 파일 삭제 - unlink

fs.unlink(Path, callback)
fs.unlinkSync(path)

 

앞선 함수들과 마찬가지로, Sync()이 붙어있으면 동기, 아니면 비동기 함수이다.