본문 바로가기

개념/javaScript

[javaScript] fs모듈로 파일 내용 수정하기

코드스테이츠 서버 스프린트를 진행하다가,

로컬 파일을 수정해야 할일이 있어서 이리저리 하다가 알게된 사실을 정리해본다.


🧐 예제로 보기

 

    // 파일을 바꿔주기 위한 작업 시작
    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를 넣어서 새로운 파일을 만들어야한다. (같은 경로에 내용이 다른 파일을 만들면 파일 수정과 동일한 원리이다. 덮어쓰기!)

 

이게 뭐라고 이해가 안갔는지,,, 고민 많이 했다


💡 관련 링크