Node.js中处理特殊字符的文件名,安全稳妥的方案
const fs = require('fs');
const path = require('path');
// 安全地编码文件名,以处理特殊字符
function encodeFilename(filename) {
return filename.replace(/[^\w]/g, (match) => {
return `\\u${match.charCodeAt(0).toString(16)}`;
});
}
// 示例:使用函数处理文件名
const originalFilename = 'some file-name.txt';
const encodedFilename = encodeFilename(originalFilename);
// 假设我们要将文件重命名为encodedFilename
const oldPath = path.join(__dirname, originalFilename);
const newPath = path.join(__dirname, encodedFilename);
// 使用fs.rename来安全地重命名文件
fs.rename(oldPath, newPath, (err) => {
if (err) throw err;
console.log(`File renamed from "${originalFilename}" to "${encodedFilename}"`);
});
这段代码首先定义了一个encodeFilename
函数,用于将文件名中的非单词字符替换为它们的Unicode转义序列。然后,我们使用Node.js的fs
模块和path
模块来安全地重命名文件。这样可以确保文件名中的特殊字符不会引起错误,也方便了文件名的管理。
评论已关闭