011 nodejs服务端:使用FS模块对文件重命名、文件复制、文件移动
nodejs服务端:文件重命名、文件复制、文件移动
在nodejs服务端对文件进行操作一般都使用到fs模块,今天我也在项目中使用到了,之前一直没机会写文档,现在我做一个小总结!
安装必要模块
npm i fs -s
文件重命名demo
var fs = require('fs')
fs.rename(`upload/${file.filename}`, `upload/${newname}`, (err) => {
if (err) {
console.log('err:' + err);
} else {
console.log('修改文件名成功');
}
});
文件拷贝demo
var floder_path = 'one'
if (order.print_type != '黑白A4单面') {
floder_path = 'two'
}
if (order.print_num > 1) {
for (var i = 1; i <= order.print_num; i++) {
fs.copyFile(`upload/${newname}`, `upload/${floder_path}/第${i}份-共${order.print_num}份-${newname}`, function (err) {
if (err) console.log('something wrong was happened')
else console.log('copy file succeed');
})
}
} else {
fs.copyFile(`upload/${newname}`, `upload/${floder_path}/${newname}`, function (err) {
if (err) console.log('something wrong was happened')
else console.log('copy file succeed');
})
}
以上是从我的项目中截取的两个代码片段,官方给出的用法如下:
FS模块用法
fs.rename(oldPath, newPath, callback)
异步地将 oldPath 上的文件重命名为 newPath 提供的路径名。 如果 newPath 已存在,则覆盖它。 除了可能的异常,完成回调没有其他参数。
fs.rename('旧文件.txt', '新文件.txt', (err) => {
if (err) throw err;
console.log('重命名完成');
});
fs.copyFile(src, dest[, flags], callback)
异步地将 src 拷贝到 dest。 默认情况下,如果 dest 已经存在,则覆盖它。 除了可能的异常,回调函数没有其他参数。 Node.js 不保证拷贝操作的原子性。 如果在打开目标文件用于写入后发生错误,则 Node.js 将尝试删除目标文件。
flags 是一个可选的整数,指定拷贝操作的行为。 可以创建由两个或更多个值按位或组成的掩码(比如 fs.constants.COPYFILE_EXCL | fs.constants.COPYFILE_FICLONE)。
- fs.constants.COPYFILE_EXCL - 如果 dest 已存在,则拷贝操作将失败。
- fs.constants.COPYFILE_FICLONE -
拷贝操作将尝试创建写时拷贝(copy-on-write)链接。如果平台不支持写时拷贝,则使用后备的拷贝机制。 - fs.constants.COPYFILE_FICLONE_FORCE -
拷贝操作将尝试创建写时拷贝链接。如果平台不支持写时拷贝,则拷贝操作将失败。
const fs = require('fs');
// 默认情况下将创建或覆盖目标文件。
fs.copyFile('源文件.txt', '目标文件.txt', (err) => {
if (err) throw err;
console.log('源文件已拷贝到目标文件');
});
如果第三个参数是数字,则它指定 flags:
const fs = require('fs');
const { COPYFILE_EXCL } = fs.constants;
// 通过使用 COPYFILE_EXCL,如果目标文件存在,则操作将失败。
fs.copyFile('源文件.txt', '目标文件.txt', COPYFILE_EXCL, callback);