【发布时间】:2018-11-01 02:49:14
【问题描述】:
背景
我正在尝试逐行读取几个 GB 大小的文件。我想处理每一行,然后将其写入文件。我不想(也不能)把一切都记在心里。
重要的是我读取一行的顺序就是我将它写入文件的顺序。
代码
为了实现这一点,我尝试使用 Node.js Readline interface
const fs = require( "fs" ),
readline = require( "readline" );
const readStream = fs.createReadStream( "./logs/report.csv" );
const writeStream = fs.createWriteStream( "./logs/out.csv", { encoding: "utf8"} );
const rl = readline.createInterface({
input: readStream,
output: writeStream,
terminal: false,
historySize: 0
});
rl.on( "line", function(line) {
//Do your stuff ...
const transformedLine = line.toUpperCase();
console.log(transformedLine);
//Then write to outstream
rl.write(transformedLine );
});
问题
如您所见,我正在尝试读取一行,对其进行解析,然后将其写入一个名为 out.csv 的文件中。
问题是输出文件总是空的。没有任何东西被写入其中。
我已经阅读了所有的方法、事件和选项,但显然我遗漏了一些东西。
问题
为什么这段代码没有写入文件?
【问题讨论】:
-
将“终端”设置为 true 会将行写入文件 writestream。
-
它会在没有任何转换的情况下编写它并限制在历史记录大小。这两件事我都不想要。
标签: javascript node.js file stream