Node.js 程序无法读取 .log 文本文件,出现缓冲区错误

Node.js 程序无法读取 .log 文本文件,出现缓冲区错误

我正在尝试使用名为“logger”的程序查看日志。运行时node logger出现以下错误:

<Buffer 66 72 75 69 74 69 73 68 79 0a>

“logger”程序文件如下所示:

var fs = require('fs');

var file = fs.createReadStream("veg.log");

file.on('readable', function() {
    var stream = null;
    while(null !== (stream = file.read()))  {
      stream.toString();
      console.log(stream);
      }
});

有人知道是什么导致了错误吗?日志文件只是纯文本。为什么这会导致我的缓冲区出现错误?我如何找出是哪个缓冲区以及是什么导致它被错误访问?

答案1

规范的做法是使用缓冲区通过监听on('data')事件来收集数据块。当流完成时,事件on('end')将被发出,然后您就可以使用缓冲区执行某些操作。

此代码应该可以满足您的需要:

var fs = require('fs');

var buffer = '';
var file = fs.createReadStream("veg.log");
file.on('data', function(chunk) {
  buffer += chunk;
});
file.on('end', function () {
  console.log(buffer);
});

答案2

您需要为该createReadStream函数指定一个缓冲区选项。如下所示:

var file = fs.createReadStream("veg.log", "utf8");

相关内容