node.js - 使用 Node.js 编写大文件

标签 node.js large-files

我正在使用 writable stream 使用 node.js 编写一个大文件:

var fs     = require('fs');
var stream = fs.createWriteStream('someFile.txt', { flags : 'w' });

var lines;
while (lines = getLines()) {
    for (var i = 0; i < lines.length; i++) {
        stream.write( lines[i] );
    }
}

我想知道这个方案在不使用 drain 的情况下是否安全。事件?如果不是(我认为是这种情况),将任意大数据写入文件的模式是什么?

最佳答案

这就是我最终做到的方式。背后的想法是创建实现 ReadStream 的可读流。接口(interface),然后使用 pipe() 方法将数据管道传输到可写流。

var fs = require('fs');
var writeStream = fs.createWriteStream('someFile.txt', { flags : 'w' });
var readStream = new MyReadStream();

readStream.pipe(writeStream);
writeStream.on('close', function () {
    console.log('All done!');
});

MyReadStream类的例子可以取自mongoose QueryStream .

关于node.js - 使用 Node.js 编写大文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9486683/

相关文章:

python - 在小块中创建非常大的 NUMPY 数组(PyTables 与 numpy.memmap)

php - 使用 stream_filter_* 在 PHP 中处理大型(超过 1 Gig)文件

android - 通过 Android Studio 将大型应用程序传输到 Android Wear

node.js - 如何显示 m :m relations in sequelize?

node.js - 无法启用 Azure Node.js 日志记录

javascript - JavaScript 数组与对象的对称差异

node.js - 即使我的路由指向不同的文件,express 也会提供 index.html

c++ - 在blocks-c++中读取文本文件

node.js - Nodejs 读取非常大的文件(~10GB),逐行处理然后写入其他文件

node.js - SailsJS - 关联记录与嵌入式集合