본문 바로가기

SCRIPT/NODE JS

[NODEJS] fs 파일시스템 모듈

[NODEJS] fs 파일시스템 모듈





NodeJS 를 이용하여 개발을 할 때, 생각보다(?) 자주, 잊을만 하면 사용하게 되는 파일시스템 (fs) 모듈입니다.

그래서 이참에 자주 쓰는 함수를 정리해볼까합니다.( 공식 모듈 설명 URL : https://nodejs.org/api/fs.html )



fs (파일시스템) 모듈

' fs 모듈은 표준 POSIX 기능을 근사하게 모델링 한 방식으로 파일 시스템과 상호 작용하기 위한 API 를 제공 ' 하기 위한 목적을 가진 모듈




0. 시작하기


무슨 모듈이든 사용하려면, 설치를 하고, 모듈을 선언을 해주어야겠지요.  fs 모듈은 기본 제공되는 모듈이므로 설치는 필요하지 않습니다.

fs 모듈을 선언해주고 시작합니다. 

var fs = require('fs');


모든 파일 시스템 작업에는 동기식비동기식 양식이 존재합니다. 필요에 따라 사용하면 편리하겠군요.





1. 파일 존재 확인 (exists)

파일의 존재여부를 확인하기 위한 메소드입니다.

fs.exists(path, callback)

fs.exists('/etc/passwd', (exists) => {
  console.log(exists ? 'it\'s there' : 'no passwd!');
});





2. 파일 읽기 / 쓰기

파일을 새로 생성하거나, 존재하는 파일을 읽기 위한 메소드입니다.

fs.open(path[, flags[, mode]], callback)

fs.openSync(path[, flags, mode])

 WRITE 

fs.open('myfile', 'wx', (err, fd) => {
  if (err) {
    if (err.code === 'EEXIST') {
      console.error('myfile already exists');
      return;
    }

    throw err;
  }

  writeMyData(fd);
});

READ
fs.open('myfile', 'r', (err, fd) => {
  if (err) {
    if (err.code === 'ENOENT') {
      console.error('myfile does not exist');
      return;
    }

    throw err;
  }

  readMyData(fd);
});




3. 파일 명 변경

파일 명을 변경하기 위한 메소드입니다

fs.rename (oldPath, newPath, callback)

fs.renameSync (oldPath, newPath)

fs.rename('oldFile.txt', 'newFile.txt', (err) => {
  if (err) throw err;
  console.log('Rename complete!');
});





4. 디렉토리 생성 /삭제

디렉토리 생성 및 삭제를 위한 메소드입니다.

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

fs.mkdirSync(path[, options])

fs.mkdir('/tmp/a/apple', { recursive: true }, (err) => {
  if (err) throw err;
});
// Windows 에서는 루트 디렉토를 사용할 경우 오류가 발생하게 됩니다. ( 'c:\' )


fs.rmdir(path, callback)

fs.rmdirSync(path)

fs.rmdir('/tmp/a/apple', (err) => {
  if (err) throw err;
});





5. 파일 삭제

파일 삭제를 위한 메소드입니다

fs.unlink(path, callback)

fs.unlinkSync(path)

// Assuming that 'path/file.txt' is a regular file.
fs.unlink('path/file.txt', (err) => {
  if (err) throw err;
  console.log('path/file.txt was deleted');
});