1. renameSync(....)
: 동기,콜백함수 return X
2. rename(oldpath, newpath, callback)
: 비동기, 모든 작업이 완료되면 callback 실행
3. fs.promises.rename().then().catch()
: promise형태로 사용. error 처리를 위해 꼭 catch를 써준다.
try{ renameSync( ... ) } catch(e){console.error(e)}
: 동기적으로 실행되어 모두 실행될 때까지 다음으로 넘어가지 않는다.
: 따로 콜백함수 지정하지 않는다.
: renameSync는 동기적으로 실행되므로 try, catch로 에러를 잡아주지 않으면, 에러가 발생했을 때 뒤의 실행이 되지 않는다. 때문에 sync일 경우 try, catch를 꼭 사용해야 한다.
try {
fs.renameSync('./sub22.html', './sub.js');
} catch (err) {
console.error(err);
}
console.log('END AFTER');
// try catch로 잡아주지 않으면, error 발생시 console.log('END AFTER');이 실행되지 않는다.
- 비동기로 실행된다.
- 모든 작업이 완료되면 결과를 받아 콜백함수를 실행한다.
- 비동기로 작성한다면, 콜백함수를 통해 적절한 error처리를 해주어야 한다.
// rename
fs.rename('./sub.js', './subsub.js', (err) => {
console.log(err);
});
console.log('1');
console.log('2');
// readFile
fs.readFile('./text.txt', 'utf8', (err, res) => {
if (err) {
console.error(err);
} else {
console.log(res);
}
});
rename과 readFile 모두 비동기로 실행되기 때문에, rename이 먼저 실행될지, readFile이 먼저 실행될지 알 수 없다.
const fs = require('fs').promises
와 같이 모두 promises로 불러올 수 있다.import { promises as fsPromises } from 'fs'
const fs = require('fs')
로 불러온 경우 아래와 같다.const fs = require('fs');
fs.promises
.readFile('./text.txt', 'utf8')
.then((data) => console.log(data))
.catch((err) => console.error(err));
console.log('this is console.log');
//this is console.log
//this is text.txt
const fs = require('fs').promises
로 불러온 경우 아래와 같다.const fs = require('fs').promises;
fs.readFile('./text.txt', 'utf8')
.then((data) => console.log(data))
.catch(console.error);
fs.writeFile('./text.txt', 'hello hello hello')
.catch(console.error);
const fs = require('fs').promises
로 불러온 경우를 기준으로 예시 작성
모든 메소드는 비동기적으로 실행된다.
때문에, appendFiled이 되기 전에 복사가 완료될 수도 있고, 의도한 결과가 나오지 않을 수 있다.
fs.readFile
기본적으로 Buffer로 읽어온다. utf8와 같이 옵션을 설정해 줄 수 있다.
fs.readFile('./text.txt', 'utf8')
.then((data) => console.log(data))
.catch(console.error);
fs.writeFile
- writeFile은 promise이기 때문에 아무것도 리턴해주지 않는다.
- 하지만, catch는 반드시 해주어야 한다.
fs.writeFile('./text.txt', 'hello hello hello')
.catch(console.error);
fs.appendFile
- 해당 파일의 기존 내용에 추가해준다.
fs.appendFile('./text.txt', 'yoyoyo').catch(console.error);
fs.copyFile
- 파일 복사
fs.copyFile('./text.txt', './text2.txt').catch(console.error);
fs.mkdir
- 디렉토리 생성, return 값 없음
fs.mkdir('sub-folder') //
.catch(console.error);
fs.unlink
- 파일 삭제
fs.unlink('./text2.txt') //
.catch(console.error);
fs.readdir
- 해당 경로의 파일명들을 스트링 배열의 형태로 return
fs.readdir('./') //
.then(console.log)
.catch(console.error);