问题描述
我想拆分一个文件:每一行在一个单独的文件中.初始文件真的很大.我完成了以下代码:
I want to split a file: each line in a separate file. The initial file is really big. I finished with code bellow:
var fileCounter = -1;
function getWritable() {
fileCounter++;
writable = fs.createWriteStream('data/part'+ fileCounter + '.txt', {flags:'w'});
return writable;
}
var readable = fs.createReadStream(file).pipe(split());
readable.on('data', function (line) {
var flag = getWritable().write(line, function() {
readable.resume();
});
if (!flag) {
readable.pause();
}
});
它有效,但它很丑陋.有没有更多的方法可以做到这一点?也许有管道,没有暂停/恢复.
It works but it is ugly. Is there more nodish way to do that? maybe with piping and without pause/resume.
注意:这不是关于行/文件/等的问题.问题是关于流的,我只是想用这个问题来说明
推荐答案
您可以使用 Node 的内置 readline
模块.
You can use Node's built-in readline
module.
var fs = require('fs');
var readline = require('readline');
var fileCounter = -1;
var file = "foo.txt";
readline.createInterface({
input: fs.createReadStream(file),
terminal: false
}).on('line', function(line) {
var writable = fs.createWriteStream('data/part'+ fileCounter + '.txt', {flags:'w'});
writable.write(line);
fileCounter++
});
请注意,如果末尾没有换行符,这将丢失文件的最后一行,因此请确保最后一行数据后跟一个换行符.
Note that this will lose the last line of the file if there is no newline at the end, so make sure your last line of data is followed by a newline.
还要注意,文档表明它是稳定性指数 2,意思是:
Also note that the docs indicate that it is Stability index 2, meaning:
稳定性:2 - 不稳定 API 正在稳定中,但有还没有足够的真实世界测试被认为是稳定的.如果合理,将保持向后兼容性.
这篇关于nodejs:单独文件中的每一行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!