node fsDelete를 한 번 더 실행하면 ENOENT 에러가 발생합니다. 존재하지 않는 파일을 지웠다는 에러입니다.
노드 8.5 버전 이후에는 createReadStream과 createWriteStream을 pipe하지 않아도 파일을 복사할 수 있습니다. 다음과 같이 하면 됩니다.
copyFile.js
const fs = require('fs').promises;
fs.copyFile('readme4.txt', 'writeme4.txt')
.then(() => {
console.log('복사 완료');
})
.catch((error) => {
console.error(error);
});
콘솔
$ node copyFile
복사 완료
readme.txt와 동일한 내용의 writeme4.txt가 생성되었을 것입니다. 첫 번째 인수로 복사할 파일을, 두 번째 인수로 복사될 경로를, 세 번째 인수로 복사 후 실행될 콜백 함수를 넣습니다.
마지막으로, 파일/폴더의 변경 사항을 감시할 수 있는 watch 메서드를 알아보겠습니다. 빈 텍스트 파일인 target.txt를 만들고 watch.js를 작성합니다.
watch.js
const fs = require('fs');
fs.watch('./target.txt', (eventType, filename) => {
console.log(eventType, filename);
});
watch.js를 실행하고 target.txt의 내용물을 수정해봅니다. 또한, 파일명을 변경하거나 파일을 삭제해봅시다.
콘솔
$ node watch
// 내용물 수정 후
change target.txt
change target.txt
// 파일명 변경 또는 파일 삭제 후
rename target.txt
내용물을 수정할 때는 change 이벤트가 발생하고, 파일명을 변경하거나 파일을 삭제하면 rename 이벤트가 발생합니다. rename 이벤트가 발생한 후에는 더 이상 watch가 수행되지 않습니다. change 이벤트가 두 번씩 발생하기도 하므로 실무에서 사용할 때는 주의가 필요합니다.