node.js - 在nodejs中将一个大文件附加到另一大文件

标签 node.js large-files fs electron

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

最佳答案

您可以使用 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);

这将缓冲文件,以 block 的形式读取它,以 block 的形式写入它,关闭两个文件,一切都为您完成。

而且,这一切都是通过异步文件 I/O 完成的,因此它将允许其他 Node.js 事件交错(例如,不会阻止 Node.js)。

关于node.js - 在nodejs中将一个大文件附加到另一大文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33331603/

相关文章:

javascript - 如何使用 try、catch 在错误处理中打印消息

node.js - 无法在 Windows 10 上安装 create-react-app

typescript - Firebase Functions Typescript - 使用 html 模板发送电子邮件

mysql - 带有 Sequelize 和 Typescript 的 NodeJS

node.js - MongoDB 范围错误 : attempt to write outside buffer bounds

java - 使用多个 IO 流通过 Java 套接字传输文件

Powershell - 如何将目录中所有文本文件的第一行提取到单个输出文件中?

python:从压缩文本文件中读取行

node.js - NodeJs : fs. stat() 或 fs.access() 检查文件夹是否存在?

Node.js:跟踪目录中的新文件