一尘不染

Node.js:计算文件中的行数

node.js

我有大型文本文件,范围在30MB和之间10GB。如何使用来计算文件中的行数Node.js

我有这些限制:

  • 整个文件不需要写入内存
  • 不需要子进程来执行任务

阅读 408

收藏
2020-07-07

共1个答案

一尘不染

不使用wc的解决方案:

var i;
var count = 0;
require('fs').createReadStream(process.argv[2])
  .on('data', function(chunk) {
    for (i=0; i < chunk.length; ++i)
      if (chunk[i] == 10) count++;
  })
  .on('end', function() {
    console.log(count);
  });

速度较慢,但​​您可能没有想到的那么多-140M +文件的传输时间为0.6秒,包括node.js加载和启动时间

>time node countlines.js video.mp4 
619643

real    0m0.614s
user    0m0.489s
sys 0m0.132s

>time wc -l video.mp4 
619643 video.mp4
real    0m0.133s
user    0m0.108s
sys 0m0.024s

>wc -c video.mp4
144681406  video.mp4
2020-07-07