본문 바로가기

Node.js/3. 기본객체

3-3 node.js fs (파일시스템)

이 포스팅의 예제는 node.js v20.5.0 입니다.

 

먼저 fs는 file system의 약자입니다.  api 문서 링크 : http://nodejs.org/api/fs.html

상당히 많은 함수를 포함하고 있는 파일시스테 모듈이지만 모듈의 반절은 권한관련입니다

(node.js 의 개발자가 지독한 유닉스 개발자로 알려져 있습니다. 디버깅모듈이 콘솔로 된것만으로도 알수 있겠지요?)

많이 쓰는 모듈 몇가지 예제입니다.

 

1. 파일 확인

const fs = require('fs');

fs.access('test1.txt', fs.constants.F_OK, (err) => {
    console.log(err ? "no exists!" : "it's there");
});

fs.exists() 파일이 존재 하는지 확인합니다. 예제의 경우 test1.txt 파일이 존재 하는지 확인합니다. 

 

 

2. 파일 생성

var fs = require('fs');

var file = 'test1.txt';
fs.open(file,'w',function(err,fd){
	if (err) throw err;
 	console.log('file open complete');
});

fs.open() 해당 파일을 엽니다. 옵션 'w' 의 경우 해당 파일이 없다면 생성합니다. 

해당 옵션에 따라 파일의 접근이 달라집니다. 

 

  파일을 읽기로 열며 해당 파일이 없다면 에러발생
 r+   읽기/쓰기 상태로 파일을 열며 파일이 없다면 에러 발생 
 w   쓰기로 파일을 열며 존재 하지 않으면 생성. 파일이 존재하면 내용을 지우고 처음부터 씀.
 w+   읽기/쓰기로 열며  존재 하지 않으면 생성. 파일이 존재하면 내용을 지우고 처음부터 씀.
 a  추가 쓰기로 열며 파일이 존재하지 않으면 만듬. 
 a+  추가 읽기/쓰기로 열며 파일이 존재 하지 않으면 만듬. 

 

 

3. 파일 이름 변경

var fs = require('fs');

fs.rename('test1.txt', 'text2.txt', function (err) {
  if (err) throw err;
  console.log('renamed complete');
});

fs.rename() 해당파일의 이름을 변경합니다. 예제는 test1.txt -> test2.txt  로 변경합니다. 

해당 파일이 없거나 권한이 없다면 에러가 발생합니다. 또한 변경하려는 이름의 같은 이름의 파일이 존재하면 에러가 발생합니다.

 

4. 파일 삭제

var fs = require('fs');
fs.unlink('text2.txt', function (err) {
  if (err) throw err;
  console.log('successfully deleted text2.txt');
});

fs.unlink() 파일을 삭제 합니다. 예제의 경우 test2.txt 파일을 삭제 합니다. 

해당 파이 없거나 권한이 없다면 에러가 발생합니다. 

 

 

5.파일 읽기

var fs = require('fs');

fs.readFile('test1.txt', 'utf8', function(err, data) {
  console.log(data);
});

fs.readFile() 해당 파일을 읽습니다. 예제의 경우 test1.txt 파일을 읽고 콘솔로 출력합니다.

 

 

6. 파일 쓰기

var fs = require('fs');

var data = 'file system example!!';
fs.writeFile('text1.txt', data, 'utf8', function(error){
	console.log('write end')
});

fs.writeFile() 해당파일에 내용을 씁니다. 예제의 경우 test1.txt파일에 data의 내용을 씁니다. 

만일 파일이 존재 하지 않으면 파일을 생성후 내용을 씁니다. 파일의 내용을 이어서 쓰진 않습니다.

 

7.파일 이어서 쓰기

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

async function appendToFile(filename, data) {
    try {
        await fs.appendFile(filename, data);
        console.log(`The data was appended to ${filename}!`);
    } catch (err) {
        console.error(`Error appending to ${filename}:`, err);
    }
}

// 사용 예시
appendToFile('text1.txt', 'data to append\n');

fs.appendFile() 해당 파일에 내용을 이어서 씁니다. 예제의 경우 test1.txt 에 'data to append' 를 이어서 씁니다. 파일이 없을경우 새로 생성하여 씁니다. 

 

 

'Node.js > 3. 기본객체' 카테고리의 다른 글

3-4 stream  (0) 2025.01.06
3-2 node.js 기본 모듈 리스트  (0) 2025.01.06
3-1 node.js 전역 객체  (0) 2025.01.06