Node.js - 파일 이름 변경

파일 이름을 변경하는 방법을 소개합니다.

1. fs.rename()을 이용한 방법

  • fs.rename()는 비동기적으로(async) old path의 파일을 new path의 파일 이름으로 변경합니다.
  • 파일 이름 변경이 완료되면 callback이 발생하며, 에러가 발생되면 에러가 전달됩니다.
  • new path의 파일이 존재하면, 파일을 덮어씁니다.
fs.rename(old_path, new_path, callback)

다음과 같이 파일 이름을 변경할 수 있습니다. 절대 경로를 사용하지 않으면, 현재 작업 디렉토리(Working directory) 아래에서 상대 경로로 파일을 찾습니다.

const fs = require('fs')

fs.rename('test.txt', 'new.txt', function (err) {
  if (err) throw err;
  console.log('File Renamed.');
});

Output:

File Renamed.

만약 old 파일이 존재하지 않는다면 아래와 같이 에러가 발생합니다.

[Error: ENOENT: no such file or directory, rename 'test.txt' -> 'new.txt'] {
  errno: -2,
  code: 'ENOENT',
  syscall: 'rename',
  path: 'test.txt',
  dest: 'new.txt'
}

2. fs.renameSync()을 이용한 방법

fs.renameSync(old_path, new_path)는 동기적으로(sync) 파일 이름을 변경합니다. async와 다르게 Callback을 전달하지 않습니다.

const fs = require('fs')

fs.renameSync('test.txt', 'new.txt');

만약 old 파일이 존재하지 않는다면, renameSync() 수행 중 에러가 발생합니다.

Error: ENOENT: no such file or directory, rename 'test.txt' -> 'new.txt'
    at Object.renameSync (fs.js:797:3)
    at Object.<anonymous> (/home/mjs/test/nodejs/example.js:3:4)
Loading script...
codechachaCopyright ©2019 codechacha