코드스테이츠 서버 스프린트를 진행하다가,
로컬 파일을 수정해야 할일이 있어서 이리저리 하다가 알게된 사실을 정리해본다.
🧐 예제로 보기
// 파일을 바꿔주기 위한 작업 시작
const path = process.cwd() + '/statesairline/repository/flightList.js'
fs.readFile(path,'utf-8',function(err, data){ //flighListh.js 파일을 읽는다.
//📌 콜백의 data는 파일자체가 아니라, 읽어온 파일 내용이다.
if (err) throw err; //파일 읽다가 에러났을때 핸들링
const regxp = new RegExp(`${flightList}`,'gm');
const result = data.replace(regxp,updated);//받아온 내용에서 flighList와 동일한 부분을 updated로 바꿔 result라는 변수에 할당
fs.writeFile(path, result, 'utf8', function (err) { //그 내용을 바탕으로 동일한 경로에 result를 작성한다.(동일한 경로에 새파일 = 파일 수정)
if (err) return console.log(err);
return res.status(200).json(updated[idx]) //이제 전달해줘야하는 새로운 객체 부분을 전달한다.
});
})
}
- fs.readFile의 마지막 인자인 콜백에서 받는 data는 파일 자체가 아니라 파일내용이다. 때문에, 콜백에서 data를 바꿨다고 파일내용이 바꾸지 않는다.
- data를 바꿨으면 다시 fs.writeFile로 동일 경로에 해당 data를 넣어서 새로운 파일을 만들어야한다. (같은 경로에 내용이 다른 파일을 만들면 파일 수정과 동일한 원리이다. 덮어쓰기!)
💡 관련 링크
'개념 > javaScript' 카테고리의 다른 글
[javaScript] arr.sort() 배열 정렬하기 (0) | 2022.08.26 |
---|---|
[javaScript] 재귀 함수와 메모리 사용량 간의 관계 (0) | 2022.08.22 |
[javaScript] fs모듈, fs.readFile (0) | 2022.08.01 |
[javaScript] async/await (0) | 2022.08.01 |
[javaScript] Promise란? + 관련 메서드들 (0) | 2022.07.29 |