본문 바로가기
백엔드/Node.js

[Node.js] Node.js에서 파일명 변경하기 / fs.rename / fsPromises.rename / fs.renameSync

by PARADISE247 2023. 3. 7.
반응형

fs.rename(oldPath, newPath, callback)

oldPath는 파일명을 변경하고 싶은 파일의 경로를

newPath에는 변경하고 싶은 새로운 파일명을 담은 경로를

callback에서는 에러를 핸들링할 수 있습니다.

 

const fs = require("fs");

fs.rename("./one.txt", "./two.txt", (err) => {
  console.error(err);
});

위의 예제는 oldPath 인자 자리에 './one.txt' 를 두번째로 newPath인자로 './two.txt'를 넣어준 후 에러를 콘솔에 출력하는 콜백 함수를 인자로 넘겨주었습니다. 이 경우 'one.txt'라는 파일의 파일명은 이 fs.rename을 실행 후에 'two.txt'라는 파일명으로 변경됩니다.

 

fsPromises.rename(oldPath, newPath)

oldPath에 파일명을 변경하고 싶은 파일의 경로를

newPath에 변경할 새로운 파일명을 담은 경로를 넣어주면 됩니다.

 

const fs = require("fs");

fs.promises
  .rename("./one-file.txt", "./two-file.txt") 
  .then(() => console.log("Done."))
  .catch(console.error);

파일명 변경을 비동기로 동작시키는 fs.promises는 Promise 객체를 사용 시 처럼 파일명이 성공적으로 변경되었을 경우(then)에 시행할 동작이나 에러가 났을 경우(catch)에 처리할 동작을 정할 수 있습니다. 

위의 예제는 파일명을 변경 성공 시 콘솔에 "Done."을 출력하고 에러가 발생할 경우 콘솔 에러를 출력하도록 구현되었습니다. 

 

fs.renameSync(oldPath, newPath)

oldPath에 파일명을 변경하고 싶은 파일의 경로를

newPath에 변경할 새로운 파일명을 담은 경로를 넣어주면 됩니다. 

try {
  fs.renameSync("./one.txt", "./two.txt");
} catch (err) {
  console.error(err);
}

이름에 sync를 포함한 것에서 보이듯 파일명을 동기적으로 변경하는 작업을 수행합니다. (try) 파일명 변경을 수행하고 

(catch) 에러 발생 시 에러를 핸들링합니다. 

반응형