使用node.js移动文件

时间:2012-11-08 15:29:34

标签: node.js

假设我有一个文件“ /tmp/sample.txt ”,我想将其移至“ /var/www/mysite/sample.txt ”这是一个不同的卷。

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

我读到 fs.rename 只能在同一个卷内工作, util.pump 已经弃用。

这样做的正确方法是什么?我读过关于stream.pipe的内容,但我无法让它工作。一个简单的示例代码将非常有用。

4 个答案:

答案 0 :(得分:13)

使用mv module

var mv = require('mv');

mv('source', 'dest', function(err) {
    // handle the error
});

答案 1 :(得分: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");
});

答案 2 :(得分:1)

与jbowes一样,mv模块可能是正确的方法,但您可以使用子进程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.
});

答案 3 :(得分:0)

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

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

希望这可以帮助你。