【问题标题】:fs.createReadStream only reading last line of file node.jsfs.createReadStream 仅读取文件 node.js 的最后一行
【发布时间】:2014-09-13 22:05:27
【问题描述】:

您好,我正在尝试简单地流式传输 csv 文件的内容,但遇到了一些非常烦人的问题。 Bellow 是我的代码,我的挫败感隐藏在我的 cmets 中。

var fileReadStream = fs.createReadStream(inFile);

// For some reason readable will yield only the last line of my file
// and if I listen for 'data' I still just get the last line of my file
fileReadStream.on('readable', function() {
  process.stdout.write(fileReadStream.read().toString());
}).on('end', function() {
  i ++;
  next();
});

对此的任何帮助都会很棒。另外,我对如何正确制作管道感到非常困惑。根据我的解释,我觉得对于管道对象,管道将简单地写入管道内的对象,然后在该对象上调用 read。但是我无法让管道正常工作。也许当我解决这个问题时,我可以更容易地弄清楚管道。谢谢。

【问题讨论】:

  • 是否有可能将整个文件加载到缓冲区中,而您在输出时只看到最后一行?添加一个错误片段以确保它不会引发错误。此外,您可能希望了解使用 csv 库来处理 csv 文件。

标签: javascript node.js file stream fs


【解决方案1】:

您应该能够简单地执行以下操作:

var fileReadStream = fs.createReadStream(inFile);
fileReadStream.on('end', function() {
  i++;
  next();
}).pipe(process.stdout);

【讨论】:

    猜你喜欢
    • 2012-07-22
    • 2020-12-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多