将一个大文件附加到nodejs

时间:2015-10-25 15:44:42

标签: node.js large-files fs electron

我正在使用电子框架(原子壳)开发应用程序,我是NodeJS的新手。这通过指定http get请求中的字节范围将大文件下载为两个(或更多)块(每个> 2GB)。完成后我想组合这两个文件。到目前为止,我已经能够想到一个解决方案,打开这两个文件并使用fs.appendFile将第二个文件的块附加到第一个文件。在我看来,这将是一个非常缓慢的过程,也将阻止nodejs。有没有其他有效的方法。我也愿意产生一个子进程并使用其他一些应用程序。

1 个答案:

答案 0 :(得分:3)

您可以使用node.js中的流将一个文件附加到另一个文件:

var fs = require('fs');

// open destination file for appending
var w = fs.createWriteStream("output.txt", {flags: 'a'});
// open source file for reading
var r = fs.createReadStream("input.txt");

w.on('close', function() {
    console.log("done writing");
});

r.pipe(w);

这将缓冲文件,以块的形式读取,以块的形式写入,关闭两个文件,全部为您完成。

并且,这一切都是使用异步文件I / O完成的,因此它将允许其他node.js活动进行交错(例如,不会阻塞node.js)。