[Node.js] fs 모듈

민수·2022년 12월 12일
0
post-thumbnail

fs 모듈

파일 시스템에 접근하는 모듈이다.
파일을 생성/삭제/읽기/쓰기가 가능하다. (폴더도 생성/삭제 가능)

파일 읽기

파일 읽기 비동기 방식

const fs = require("fs");

fs.readFile("읽을 파일 경로", [인코딩 방식(default=null)], (Error, Data) => {
  if (Error) {
  // 에러가 발생하면 실행 할 코드
  }
  // 파일을 정상적으로 읽으면 실행 할 코드
});

파일 읽기 비동기 방식 예제

const fs = require("fs");

fs.readFile("./readme.txt", (err, data) => {
  if (err) {
    throw err;
  }
  console.log(data);
  console.log(data.toString());
});

⚠️주의: 읽을 파일 경로는 js 파일 기준이 아니라 node 명령어를 실행하는 터미널 기준이다.
이럴때는 파일 경로를 절대 경로로 사용하면 된다.

  • 정상 실행 결과
  • 오류

    실행 결과를 보면 Buffer라는 것이 출력이 된다.
    인코딩 방식을 지정해 주지 않으면 Buffer가 반환된다.
    Buffer를 string으로 변환하고 싶다면 두번째 인자값에 인코딩 방식(예를 들어 "utf-8")을 넣어주거나 출력시 toString() 메서드를 사용하면 된다.

파일 읽기 동기 방식

const fs = require("fs");

const 변수 = fs.readFileSync("읽을 파일 경로", [인코딩 방식(default=null)])

콜백 함수를 넣지 않는 대신 직접 return을 받아야 한다.

파일 읽기 동기 방식 예제

const fs = require("fs");

const readFile = fs.readFileSync("./readme.txt");

console.log(readFile);
console.log(readFile.toString());
  • 정상 실행 결과
  • 오류

    이 방식도 인코딩 방식을 지정해주지 않으면 Buffer가 반환된다.
    string으로 변환하고 싶다면 두번째 인자값에 인코딩 방식을 넣어 주거나 출력시 toString() 메서드를 사용하면 된다.

파일 쓰기

파일 쓰기 비동기 방식

const fs = require("fs");

fs.writeFile("생성할 파일 경로", "넣을 데이터", [인코딩 방식(default="utf8")], (Erorr)=> {
  if (Error) {
    // 에러가 발생하면 실행 할 코드
  }
   // 파일을 정상적으로 쓰면 실행 할 코드
});

파일 쓰기 비동기 방식 예제

const fs = require("fs");

fs.writeFile("./write.txt", "파일 내용", (err) => {
  if (err) throw err;
  console.log(`글이 성공적으로 작성되었습니다.`);
});

파일 쓰기 동기 방식

const fs = require("fs");

fs.writeFileSync("생성할 파일 경로", "넣을 데이터", [인코딩 방식(default="utf8")])

파일 쓰기 동기 방식 예제

const fs = require("fs");

fs.writeFileSync("./write.txt", "파일 내용");
console.log(`글이 성공적으로 작성되었습니다.`);

디렉토리 목록 읽기

디렉토리 목록 읽기 비동기 방식

const fs = require("fs")

fs.readdir("읽을 디렉토리 경로", [인코딩 방식(default="utf8")], (Error, Data) => {
	if (Error) {
    // 에러가 발생하면 실행 할 코드
    }
  	// 디렉토리를 정상적으로 읽으면 실행 할 코드
});

Data 변수에 배열 형태로 읽은 파일 혹은 디렉토리를 저장한다.

디렉토리 목록 읽기 비동기 방식 예제

const fs = require("fs");

fs.readdir("./", (err, data) => {
  if (err) throw err;
  console.log(data);
});

디렉토리 목록 읽기 동기 방식

const fs = require("fs")

const 변수 = fs.readdirSync("읽을 디렉토리 경로", [인코딩 방식(default="utf8")])

콜백 함수를 넣지 않는 대신 직접 return을 받아야 한다.

디렉토리 목록 읽기 동기 방식 예제

const fs = require("fs");

const dir = fs.readdirSync("./");
console.log(dir);

파일 정보 보기

파일 정보 보기 비동기 방식

const fs = require("fs");

fs.stat("읽을 파일/디렉토리 경로", (Error, stats)=> {
	if (Error) {
    // 에러가 발생하면 실행 할 코드
    }
  	// 정상적으로 읽으면 실행 할 코드
});

파일 정보 보기 비동기 방식 예제

const fs = require("fs");

fs.stat("./test.txt", (err, stats) => {
  if (err) throw err;
  console.log(stats);
  console.log(stats.isDirectory()); // false
  console.log(stats.isFile()); // true
});


isDirectory()isFile() 메서드를 이용해 디렉토리인지 파일인지 확인 할 수 있다.

파일 정보 보기 동기 방식

const fs = require("fs")

const 변수 = fs.statSync("읽을 파일/디렉토리 경로")

콜백 함수를 넣지 않는 대신 직접 return을 받아야 한다.

파일 정보 보기 동기 방식 예제

const fs = require("fs");

const stat = fs.statSync("./test.txt");
console.log(stat);
console.log(stat.isDirectory()); // false
console.log(stat.isFile()); // true

참고

Node.js 교과서 - 길벗
Node.js 18.12.1 docs

0개의 댓글