为了账号安全,请及时绑定邮箱和手机立即绑定

在node.js中复制文件的最快方法

在node.js中复制文件的最快方法

白衣非少年 2019-10-14 14:22:30
我正在处理的项目(node.js)暗示了文件系统的许多操作(复制/读取/写入等)。我想知道哪些方法是最快的,我很乐意得到建议。谢谢。
查看完整描述

3 回答

?
慕勒3428872

TA贡献1848条经验 获得超6个赞

这是使用流在一行代码中复制文件的好方法:


var fs = require('fs');


fs.createReadStream('test.log').pipe(fs.createWriteStream('newLog.log'));

在节点v8.5.0中,添加了copyFile


const fs = require('fs');


// destination.txt will be created or overwritten by default.

fs.copyFile('source.txt', 'destination.txt', (err) => {

  if (err) throw err;

  console.log('source.txt was copied to destination.txt');

});


查看完整回答
反对 回复 2019-10-14
?
哆啦的时光机

TA贡献1779条经验 获得超6个赞

相同的机制,但这增加了错误处理:


function copyFile(source, target, cb) {

  var cbCalled = false;


  var rd = fs.createReadStream(source);

  rd.on("error", function(err) {

    done(err);

  });

  var wr = fs.createWriteStream(target);

  wr.on("error", function(err) {

    done(err);

  });

  wr.on("close", function(ex) {

    done();

  });

  rd.pipe(wr);


  function done(err) {

    if (!cbCalled) {

      cb(err);

      cbCalled = true;

    }

  }

}


查看完整回答
反对 回复 2019-10-14
?
杨__羊羊

TA贡献1943条经验 获得超7个赞

createReadStream/createWriteStream由于某种原因,我无法使该方法正常工作,但是使用fs-extranpm模块,它可以立即工作。我不确定性能是否有所不同。


fs-extra


npm install --save fs-extra


var fs = require('fs-extra');


fs.copySync(path.resolve(__dirname,'./init/xxx.json'), 'xxx.json');


查看完整回答
反对 回复 2019-10-14
  • 3 回答
  • 0 关注
  • 1011 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信