Node.js - ファイル名の変更

ファイル名を変更する方法を紹介します。

1. fs.rename() を使った方法

  • fs.rename() は非同期 (async) old path のファイルを new path のファイル名に変更します。
  • ファイル名の変更が完了するとコールバックが発生し、エラーが発生するとエラーが送出されます。
  • new pathのファイルが存在すると、ファイルを上書きします。
fs.rename(old_path, new_path, callback)

次のようにファイル名を変更できます。絶対パスを使用しない場合は、現在の作業ディレクトリの下で相対パスでファイルを見つけます。

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)
codechachaCopyright ©2019 codechacha