riz*_*oro 125 file node.js express
如何在node.js上移动文件(如mv命令shell)?是否有任何方法或我应该读取文件,写入新文件并删除旧文件?
riz*_*oro 139
根据seppo0010评论,我使用重命名功能来做到这一点.
http://nodejs.org/docs/latest/api/fs.html#fs_fs_rename_oldpath_newpath_callback
fs.rename(oldPath,newPath,callback)
添加于:v0.0.2
Run Code Online (Sandbox Code Playgroud)oldPath <String> | <Buffer> newPath <String> | <Buffer> callback <Function>异步重命名(2).除了可能的异常之外,没有给完成回调的参数.
Teo*_*ahi 42
此示例取自:Action.js in Action
move()函数,如果可能,重命名或回退到复制
var fs = require('fs');
module.exports = function move(oldPath, newPath, callback) {
fs.rename(oldPath, newPath, function (err) {
if (err) {
if (err.code === 'EXDEV') {
copy();
} else {
callback(err);
}
return;
}
callback();
});
function copy() {
var readStream = fs.createReadStream(oldPath);
var writeStream = fs.createWriteStream(newPath);
readStream.on('error', callback);
writeStream.on('error', callback);
readStream.on('close', function () {
fs.unlink(oldPath, callback);
});
readStream.pipe(writeStream);
}
}
Run Code Online (Sandbox Code Playgroud)
Han*_*ani 18
本地使用nodejs
var fs = require('fs')
var oldPath = 'old/path/file.txt'
var newPath = 'new/path/file.txt'
fs.rename(oldPath, newPath, function (err) {
if (err) throw err
console.log('Successfully renamed - AKA moved!')
})
Run Code Online (Sandbox Code Playgroud)
dea*_*unk 17
util.pump 在节点0.10中已弃用并生成警告消息
util.pump() is deprecated. Use readableStream.pipe() instead
Run Code Online (Sandbox Code Playgroud)
因此,使用流复制文件的解决方案是:
var source = fs.createReadStream('/path/to/source');
var dest = fs.createWriteStream('/path/to/dest');
source.pipe(dest);
source.on('end', function() { /* copied */ });
source.on('error', function(err) { /* error */ });
Run Code Online (Sandbox Code Playgroud)
vor*_*laz 11
对大于 8.0.0 的 Node 版本使用 promise:
const {promisify} = require('util');
const fs = require('fs');
const {join} = require('path');
const mv = promisify(fs.rename);
const moveThem = async () => {
// Move file ./bar/foo.js to ./baz/qux.js
const original = join(__dirname, 'bar/foo.js');
const target = join(__dirname, 'baz/qux.js');
await mv(original, target);
}
moveThem();
Run Code Online (Sandbox Code Playgroud)
使用重命名功能:
fs.rename(getFileName, __dirname + '/new_folder/' + getFileName);
Run Code Online (Sandbox Code Playgroud)
哪里
getFilename = file.extension (old path)
__dirname + '/new_folder/' + getFileName
Run Code Online (Sandbox Code Playgroud)
假设你想保持文件名不变.
该fs-extra模块允许您使用它的move()方法执行此操作.我已经实现了它,如果你想将文件从一个目录完全移动到另一个目录,它就可以正常工作 - 即.从源目录中删除该文件.应该适用于大多数基本情况.
var fs = require('fs-extra')
fs.move('/tmp/somefile', '/tmp/does/not/exist/yet/somefile', function (err) {
if (err) return console.error(err)
console.log("success!")
})
Run Code Online (Sandbox Code Playgroud)
这是一个使用util.pump的例子,来自>> 如何将文件a移动到Node.js中的不同分区或设备?
var fs = require('fs'),
util = require('util');
var is = fs.createReadStream('source_file')
var os = fs.createWriteStream('destination_file');
util.pump(is, os, function() {
fs.unlinkSync('source_file');
});
Run Code Online (Sandbox Code Playgroud)