본문 바로가기
Web/Nodejs

[Node.js] 모듈 - 4️⃣ fs

by coding-choonsik 2023. 4. 26.
728x90
반응형
SMALL

1. fs(file system)

  • 파일 시스템과 상호작용하기 위한 API를 제공
  • 이 모듈을 사용하면 파일 생성, 읽기, 쓰기, 수정, 삭제 등과 같은 파일 시스템 조작을 수행

 

2. 동기식 처리와 비동기식 처리

2-1. 비동기적 처리

  • fs 모듈에서 파일 시스템과 상호작용하는 메서드는 대부분 비동기적인 방식으로 동작
  • 비동기적으로 동작하는 메서드는 콜백 함수를 인자로 받아 해당 작업이 완료되면 콜백 함수가 실행
  • 파일 시스템 작업이 끝날 때까지 기다리지 않고 다른 작업을 수행할 수 있음 ➡ 비동기적

 

2-2. 동기적 처리

  • fs 모듈은 동기적으로 동작하는 메서드도 제공
  • 동기적으로 동작하는 메서드는 호출한 즉시 결과값을 반환
  • 대부분 이름 끝에 Sync가 붙어서 표시
  • 동기적인 메서드를 사용하면 해당 작업이 완료될 때까지 프로그램이 대기하므로, 작업이 매우 짧거나 단순한 경우에만 사용함

 

const fs = require('fs');

const data = fs.readFileSync('file.txt', 'utf8');
console.log(data);

 

3. 메서드

  • fs.readFile(path[, options], callback): 주어진 경로에 있는 파일의 내용비동기적으로 읽어옴
  • fs.writeFile(file, data[, options], callback): 주어진 경로에 있는 파일에 데이터를 비동기적으로 씀
  • fs.appendFile(file, data[, options], callback): 주어진 경로에 있는 파일의 끝에 데이터를 비동기적으로 추가
  • fs.unlink(path, callback): 주어진 경로에 있는 파일비동기적으로 삭제
  • fs.mkdir(path[, options], callback): 주어진 경로에 디렉토리비동기적으로 생성
  • fs.readdir(path[, options], callback): 주어진 경로에 있는 디렉토리의 파일 목록비동기적으로 읽어옴
  • fs.stat(path, callback): 주어진 경로에 있는 파일의 상태 정보 비동기적으로 반환
  • fs.createReadStream(path[, options]): 주어진 경로에 있는 파일을 읽기 위한 스트림 객체를 생성
  • fs.createWriteStream(path[, options]): 주어진 경로에 있는 파일에 데이터를 쓰기 위한 스트림 객체를 생성

 

// fs의 promises 기능만 가져오기
const fs = require('fs').promises;

// 파일 읽기
// 두번째 매개변수에 원하는 인코딩방식을 적어주면 인코딩된 결과를 담아줌!
fs.readFile('./test.txt', 'utf8')  
    .then((data) => console.log(data))  // data에 읽어온 내용을 담음
    .catch(console.error)
console.log('---------------')

// data 결과 <Buffer 48 65 6c 6c 6f 21 20 4e 6f 64 65 2e 6a 73 21>
// 인코딩되지 않은 기계어로 저장됨, 인코딩해서 원하는대로 사용할 수 있도록

// 파일 쓰기(출력)
fs.writeFile('./write.txt', 'Hello! 파일 출력 예제입니다!')
    .catch(console.error)  // 에러처리 해줘야함!

// 기존 파일에 추가 출력
fs.appendFile('./write.txt', '추가로 글을 출력합니다!')
    .catch(console.error)

// 복사
fs.copyFile('./test.txt', './test2.txt')
    .catch(console.error)

// 디렉토리 생성하기
fs.mkdir('subdir')  // 생성할 폴더의 이름, 이름이 기존에 있으면 error
    .catch(console.error)

// 현재경로의 파일을 불러옴
fs.readdir('./')
    .then(console.log)
    .catch(console.error)

728x90
반응형
LIST