js实现重命名
使用 fs 模块重命名文件或目录
在 Node.js 中,可以使用内置的 fs 模块来实现文件或目录的重命名操作。fs.rename() 方法是同步和异步两种方式的主要选择。
异步重命名示例:
const fs = require('fs');
fs.rename('oldFile.txt', 'newFile.txt', (err) => {
if (err) throw err;
console.log('重命名完成');
});
同步重命名示例:

const fs = require('fs');
try {
fs.renameSync('oldDir', 'newDir');
console.log('重命名完成');
} catch (err) {
console.error(err);
}
使用 promises API 重命名
Node.js 也提供了基于 Promise 的文件系统 API:
const fs = require('fs').promises;
async function renameFile() {
try {
await fs.rename('old.txt', 'new.txt');
console.log('重命名成功');
} catch (error) {
console.error('重命名失败:', error);
}
}
renameFile();
检查文件是否存在后再重命名
在重命名前可以先检查文件是否存在以避免错误:

const fs = require('fs');
fs.access('oldFile.txt', fs.constants.F_OK, (err) => {
if (err) {
console.error('文件不存在');
return;
}
fs.rename('oldFile.txt', 'newFile.txt', (err) => {
if (err) throw err;
console.log('重命名完成');
});
});
跨设备移动文件
当需要在不同设备或分区移动文件时,常规的重命名操作可能失败。这时需要先复制文件再删除原文件:
const fs = require('fs');
function moveFile(source, target) {
return new Promise((resolve, reject) => {
fs.copyFile(source, target, (err) => {
if (err) return reject(err);
fs.unlink(source, (err) => {
if (err) return reject(err);
resolve();
});
});
});
}
moveFile('source.txt', 'target.txt')
.then(() => console.log('移动完成'))
.catch(console.error);
批量重命名文件
以下是一个批量重命名目录中文件的示例:
const fs = require('fs');
const path = require('path');
const directory = './files';
const prefix = 'new_';
fs.readdir(directory, (err, files) => {
if (err) throw err;
files.forEach(file => {
const oldPath = path.join(directory, file);
const newPath = path.join(directory, prefix + file);
fs.rename(oldPath, newPath, err => {
if (err) console.error(`重命名 ${file} 失败`, err);
else console.log(`重命名 ${file} 成功`);
});
});
});
注意事项
重命名操作在不同操作系统上可能有不同限制。Windows 系统对某些字符(如 :, ", <, >, | 等)在文件名中的使用有限制,而 Linux/MacOS 系统则相对宽松。
重命名目录时,需要确保目录不是当前工作目录,否则可能导致操作失败或意外结果。






