nodejs:单独文件中的每一行 [英] nodejs: each line in separate file

查看:66
本文介绍了nodejs:单独文件中的每一行的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我想拆分一个文件:每一行在一个单独的文件中.初始文件真的很大.我完成了以下代码:

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 正在稳定中,但有还没有足够的真实世界测试被认为是稳定的.如果合理,将保持向后兼容性.

Stability: 2 - Unstable The API is in the process of settling, but has not yet had sufficient real-world testing to be considered stable. Backwards-compatibility will be maintained if reasonable.

这篇关于nodejs:单独文件中的每一行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆