2

假设我有一个文件“ /tmp/sample.txt ”,我想将它移动到不同卷中的“ /var/www/mysite/sample.txt ”。

如何在 node.js 中移动文件?

我读到fs.rename仅在同一卷内有效,而util.pump已被弃用。

正确的方法是什么?我读到了stream.pipe,但我无法让它工作。一个简单的示例代码将非常有帮助。

4

4 回答 4

13

使用mv 模块

var mv = require('mv');

mv('source', 'dest', function(err) {
    // handle the error
});
于 2012-11-08T15:46:01.457 回答
3

如果在 Windows 上并且没有“mv”模块,我们可以这样做吗

var fs = require("fs"),
    source = fs.createReadStream("c:/sample.txt"),
    destination = fs.createWriteStream("d:/sample.txt");

source.pipe(destination, { end: false });
source.on("end", function(){
    fs.unlinkSync("C:/move.txt");
});
于 2013-06-11T13:53:44.050 回答
2

mv 模块,就像 jbowes 所说的那样,可能是正确的方法,但是您可以使用子进程 API 并使用内置的 OS 工具作为替代方案。如果你在 Linux 中使用“mv”命令。如果您在 Windows 中,请使用“移动”命令。

var exec = require('child_process').exec;
exec('mv /temp/sample.txt /var/www/mysite/sample.txt', 
  function(err, stdout, stderr) {
    // stdout is a string containing the output of the command.
});
于 2012-11-08T15:53:29.880 回答
2

如果 exec 不能正常工作,您也可以使用 spawn。

var spawn = require("child_process").spawn;
var child = spawn("mv", ["data.csv","./done/"]);
child.stdout.on("end", function () {                
    return next(null,"finished")
});  

希望这可以帮助你。

于 2017-04-13T14:09:29.337 回答