Will find a way

NodeJs fs 모듈 (파일 시스템) 본문

BackEnd/NodeJs

NodeJs fs 모듈 (파일 시스템)

Jaka_Park 2024. 6. 18. 15:43

fs 모듈이란

파일을 읽거나 쓰거나 생성 삭제 등을 할 때 사용하는 내장 모듈 파일시스템

내장 모듈이기 때문에 별도의 라이브러리 설치 없이 사용이 가능하다.

 

모듈 불러오기

const fs = require("fs");

 

 

비동기 함수 vs 동기 함수

fs 모듈에서 제공하는 비동기 메서드는 마지막 인자로 콜백함수를 받고 아무 값도 반환하지 않는다.

반면에 동기 메서드는 결과값을 반환(return)하며 예외를 일으킬 수 있다.

(동기 메서드는 sync로 끝난다. 동기 / 비동기 메서드 구분이 가능) 

 

 

폴더가 있는지 없는지 확인하는 법 (existsSync)

let folder = fs.existsSync("test");
console.log(folder);

// test라는 폴더가 있으면 true 없으면 false

 

 

폴더 생성 (mkdir)

폴더가 없다면 생성하는 함수를 만들어 보자

if( !folder ) {
  // 비동기적으로 실행되는 메서드
  // 매개변수로 폴더를 만들 경로를 전달
  fs.mkdir("test", (err) => {
    if(err){
      console.log(err);
      console.log("에러 발생");
    } else {
      console.log("test 폴더가 정상적으로 생성됨");
   	  // 폴더가 생성되고 처리해야할 내용
    }
  })
  
  const text = fs.mkdirSync("Test");
  console.log("동기");
}

 

파일 생성 (writeFile)

경로를 지정하여 파일을 만들어 보자

// writeFile : 파일을 쓰기) 파일에 데이터를 포함하여 파일을 만들어준다.
// write("파일 생성 경로 및 파일 이름", "파일에 작성할 내용", "함수")
fs.writeFile("Test/text.txt", "Hello world", (err) => {
  if(err){
    console.log(err);
  } else {
    console.log("파일이 만들어 졌음")
  }
})

fs.writeFileSync("TGest/text.txt", "Hello World2");
console.log("파일이 잘 만들어 졌음");

 

만약 파일이 이미 있다면 내용을 수정해준다.

 

파일 읽기 (readFile)

// 파일을 읽어오자
// 전달한 익명함수의 매개변수 순서가 에러 결과 순으로
fs.readFile("/test/text.txt", "utf8", (err, data) => {
  if(err){
    console.log(err);
  } else {
    console.log(data);
  }
})

// 동기적으로 실행
// 결과를 반환하는 방식
// 밑에 함수가 끝나고 결과
let data = fs.readFileSync("Test/text.txt", "utf8")
console.log(data);

 

파일 삭제 (rm)

// recursive 삭제할 때 옵션으로 폴더안에 있는 내용까지 삭제
fs.rm("test", { recursive: true }, (err) => {
  if(err){
    console.log(err);
  } else {
    console.log("폴더 삭제 완료");
  }
})