为了账号安全,请及时绑定邮箱和手机立即绑定

在node.js中一次只读取一行文件?

在node.js中一次只读取一行文件?

拉丁的传说 2019-06-26 15:25:50
在node.js中一次只读取一行文件?我试着一次读一个大文件。我发现关于Quora的问题这是关于这个问题的,但我错过了一些联系,以使整件事合二为一。 var Lazy=require("lazy");  new Lazy(process.stdin)      .lines     .forEach(           function(line) {                console.log(line.toString());            }  );  process.stdin.resume();我想弄清楚的一点是,我可以一次从一个文件中读取一行,而不是像这个示例中的STDIN那样。我试过: fs.open('./VeryBigFile.csv', 'r', '0666', Process);  function Process(err, fd) {     if (err) throw err;     // DO lazy read   }但不管用。我知道,在紧要关头,我可以回到使用类似PHP的东西,但我想弄清楚这一点。我不认为另一个答案会起作用,因为文件比我正在运行它的服务器的内存要大得多。
查看完整描述

3 回答

?
素胚勾勒不出你

TA贡献1827条经验 获得超9个赞

对于这样简单的操作,不应该有任何依赖第三方模块。放轻松点。

var fs = require('fs'),
    readline = require('readline');var rd = readline.createInterface({
    input: fs.createReadStream('/path/to/file'),
    output: process.stdout,
    console: false});rd.on('line', function(line) {
    console.log(line);});


查看完整回答
反对 回复 2019-06-26
?
BIG阳

TA贡献1859条经验 获得超6个赞

有一个非常好的模块,用于逐行读取文件,它称为线路阅读器

用它你只需写:

var lineReader = require('line-reader');lineReader.eachLine('file.txt', function(line, last) {
  console.log(line);
  // do whatever you want with line...
  if(last){
    // or check if it's the last one
  }});

如果需要更多的控制,甚至可以使用“java样式”接口迭代文件:

lineReader.open('file.txt', function(reader) {
  if (reader.hasNextLine()) {
    reader.nextLine(function(line) {
      console.log(line);
    });
  }});


查看完整回答
反对 回复 2019-06-26
  • 3 回答
  • 0 关注
  • 1161 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信