파일시스템 모듈이란, 파일 처리와 관련된 작업을 하는 모듈로 보통 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로 파일을 쓴다. |
/** (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 + '파일 삭제 완료');
}