[ TIL 221205 ] Node.js fs module(작성 중)

ponyo·2022년 12월 5일
0

Node

목록 보기
5/7

fs?

파일시스템 모듈이란, 파일 처리와 관련된 작업을 하는 모듈로 보통 FileSystem을 줄여서 fs 모듈이라고 줄여 부릅니다.

공식 문서에 따르면, 비동기 방식을 사용하는 API와, 콜백과 동기 방식을 사용하는 API 두가지 모두를 제공한다.
node fs 공식홈페이지

fs 모듈에는 대부분의 메소드들이 동기/비동기로 나뉘는데, Sync라는 이름이 붙어있는 메소드가 동기방식을 사용한다고 보면 됩니다.

동기적 읽기 방식을 사용하면 파일을 읽으면서 다른 작업을 동시에 할 수 없습니다.

하지만 비동기적으로 읽으면 파일을 읽으면서 다른 작업도 동시에 수행할 수 있고, 파일을 다 읽으면 매개변수 callback으로 전달한 함수가 호출됩니다.

주로 비동기적 형식을 많이 사용하지만, 서버 시작 시 세팅 파일을 읽는 작업과 같이 동기적 형식이 더 적절한 경우도 있습니다.

모듈 불러오기

비동기 방식

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

동기 방식

const fs = require('fs');

파일 읽기/쓰기 메소드

메소드 이름설명
readFile(filename, [encoding], [callback]비동기식 IO로 파일을 읽어 들인다.
readFileSync(filename, [encoding])동기식 IO로 파일을 읽어 들인다.
writeFile(filename, data, encoding=’utf8’, [callback])비동기식 IO로 파일을 쓴다.
writeFileSync(filename, data, encoding=’utf8’)동기식 IO로 파일을 쓴다.

사용해보기

file write sync ( 동기 )

/** (1) 모듈 참조 */
const fs = require('fs');

/** (2) 필요한 변수 생성 */
const target = './output_sync.txt'; // 저장할 파일의 경로 ()
const content = "Hello World\nNice World"; // 저장할 내용
const isExists = fs.existsSync(target); // 파일의 존재 여부 검사

if (!isExists) {
  /** (3) 파일이 존재하지 않을 경우 새로 저장 */
  // 저장할 경로는 상대, 절대 경로 모두 가능
  // 이 파일을 다 저장하기 전까지는 프로그램이 대기 상태
  // 그러므로 대용량 처리에는 적합하지 않음
  fs.writeFileSync(target, content, 'utf8');

  // 퍼미션 설정
  fs.chmodSync(target, '0766');
  
  // 파일 저장이 완료된 후에나 메시지가 표시된다.
  console.log(target + '파일에 데이터 쓰기 및 퍼미션 설정 완료.');
} else {
  /** (4) 파일이 존재할 경우 파일 삭제 */
  fs.unlinkSync(target)
  console.log(target + '파일 삭제 완료');
}
profile
😁

0개의 댓글