将一个大文件追加到nodejs中的其他大文件中

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

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

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); 

这将缓冲文件,分块读取,分块写入,closures这两个文件,全部完成。

而且,这一切都是用asynchronous文件I / O完成的,所以它会允许其他node.js活动交错(例如不会阻塞node.js)。