【问题标题】:Append one large file to other large file in nodejs在nodejs中将一个大文件附加到另一个大文件
【发布时间】:2015-10-26 01:03:04
【问题描述】:

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

【问题讨论】:

    标签: node.js large-files fs electron


    【解决方案1】:

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

    【讨论】:

    • 所以这是最好的方法,感谢您澄清这不会阻止其他活动。
    猜你喜欢
    • 2019-08-15
    • 2018-12-06
    • 2023-03-06
    • 2018-02-07
    • 1970-01-01
    • 2020-03-19
    • 1970-01-01
    • 2021-03-09
    • 1970-01-01
    相关资源
    最近更新 更多