Node

[Node.js] FS 모듈 간단하게 사용해보기

YaluStar 2023. 2. 10. 17:36

안녕하세요.

이번에는 Node.js의 파일 모듈을 간단하게 사용해 보겠습니다.

 

 

1. fs 모듈

  • 파일 관련 처리 모듈
  • 사용 시 require 함수로 가져와서 사용한다.
const fs = require('fs');

 

1-1. readFile 함수

  • 파일의 데이터를 가져올 수 있는 함수

test.txt 파일의 데이터를 가져와서 출력하는 내용입니다.

const fs = require('fs');

fs.readFile('./test.txt', function(err, data) {
    if(err) {
        throw err;
    }
    console.log('data : ', data);
    console.log('data2 : ', (String(data)));
    console.log('data3 : ', data.toString());
});

 

데이터를 가져와서 그냥 출력하면 Buffer 형태로 보여줍니다.

그래서 String으로 변환 후 출력을 해야 정상적인 데이터가 나옵니다.

 

  • 파일 없는 경우

파일이 없는 상태로 실행하면 error가 발생하며 throw err; 명령어가 실행됩니다.

에러 메시지를 보여주고 프로그램을 종료시킵니다.

 

  • Promise 사용
  • require 함수를 사용할 때 뒤에 promises를 붙이면 Promise 기능도 사용할 수 있습니다.
const fs2 = require('fs').promises;
// promises 함수를 사용할 수 있게 됨

fs2.readFile('./test.txt')
.then((data) => {
    console.log('promise - data : ', data.toString());
});

 

1-2. wrtieFile 함수

  • 파일 생성하는 함수
  • writeFile 함수는 resolve 값을 보내지 않습니다.

‘sesac’라는 내용을 write.txt 파일에 저장하겠다는 뜻입니다.

그리고 생성한 write.txt를 읽어서 콘솔로 출력하는 코드입니다.

  • 이미 같은 이름의 파일이 존재해도 실행되지만, 내용이 덮어쓰기 됩니다.
const fs2 = require('fs').promises;

// writeFile 함수는 resolve 값을 보내지 않아서 다음 함수에서 msg 변수로 읽는 방법이 없다.
fs2.writeFile('./write.txt', 'sesac')
.then(function() {
    return fs2.readFile('./write.txt');
})
.then(function(data) {
    console.log(data.toString());
});

 

  • callback 방식의 writeFile 함수

Promise를 사용하지 않고 사용한 방식입니다.

결과는 동일합니다.

const fs = require('fs');

fs.writeFile('./write2.txt', 'test', function(err) {
    if(err) {
        throw err;
    }
    console.log('write2File success!');
    fs.readFile('./write2.txt', function(err, data) {
        if(err) {
            throw err;
        }
        console.log('write2File data : ', data.toString());
    })
});

 

1-3. copyFile 함수

  • 파일을 복사하는 함수
  • fs.copyFile('./a.txt', './b.txt');
    • a.txt 파일을 복사해서 b.txt 파일을 생성한다.

 

1-4. rename 함수

  • 파일 이름을 변경하는 함수
  • fs.rename('./oldName.txt', './newName.txt');
    • oldName.txt 파일을 newName.txt 파일로 이름을 변경한다.

 

wrtieFile을 이용해서 sesac.txt 파일을 생성합니다.

내용은 ‘반갑습니다.’가 저장됩니다.

그리고 sesac.txt파일을 복사해서 sesac2.txt 파일을 생성합니다.

복사한 sesac2.txt 파일의 이름을 new.txt 파일로 변경합니다.

const fs = require('fs').promises;

fs.writeFile('./sesac.txt', "반갑습니다.")
.then(function(err) {
    if(err) throw err;
    console.log('writeFile 생성');
    return fs.copyFile('./sesac.txt', './sesac2.txt');
})
.then(function(err) {
    if(err) throw err;
    console.log('copyFile success');
    return fs.rename('./sesac2.txt', './new.txt');
})
.then(function(err) {
    if(err) throw err;
    console.log('sesac2 => new');
});

 

실제로 파일을 확인해 보면 변경된 파일들을 확인할 수 있습니다.

 

이상으로 Node.js의 파일(fs) 모듈에 대하여 알아보았습니다.

감사합니다.

 

반응형