How to Rename Files in Node.js
Node.js provides a built-in module, fs
, for managing file systems, including renaming files.
Let's see how:
Using fs.rename
The fs.rename
method is asynchronous and takes three parameters: the current filename, the new filename, and a callback function. The callback function executes after the rename operation completes and handles any errors that might occur:
const fs = require('node:fs'); fs.rename('oldFileName.txt', 'newFileName.txt', function(err) { if (err) throw err; console.log('File renamed successfully'); });
Multiple Files
To rename multiple files, use fs.readdir
to list files in a directory, then apply fs.rename
within a loop:
const fs = require('node:fs'); fs.readdir('./data/', (err, files) => { if (err) throw err; files.forEach(file => { if (file.endsWith('.txt')) { const newName = file.replace('.txt', '.renamed.txt'); fs.rename(`./data/${file}`, `./data/${newName}`, err => { if (err) throw err; console.log(`${file} was renamed to ${newName}`); }); } }); });
Synchronous with fs.renameSync
For those preferring synchronous operations, fs.renameSync
avoids callbacks but requires try-catch for error handling:
try { fs.renameSync('oldFileName.txt', 'newFileName.txt'); console.log('File renamed successfully'); } catch (err) { console.error('Error occurred:', err); }
Gotchya
You'll still need permission to alter files, so ensure the Node.js process has appropriate permissions to read and write files.