1

我有一个巨大的(~1.5 gig)文本文件可以用'fs'读取,它给了我这个错误:

RangeError
RangeError: length > kMaxLength
    at new Buffer (buffer.js:242:21)
    at fs.js:130:16
    at Object.oncomplete (fs.js:297:15)

这是我的代码的一部分:

var fs = require('fs');
fs.readFile('file.txt', 'ASCII', function (err, data) {
  console.log(data)
});

即使我使用此命令,它也会让我返回错误: node --max-old-space-size=8000 file.js 欢迎任何建议:) 谢谢!

4

2 回答 2

4

即使对于 64 位安装,您也不能将内存限制增加到超过 ~1.7GB(32 位 ~1GB)。请参阅常见问题解答。所以你不能设置--max-old-space-size超过这个限制。

您可以改为使用文件的流式读取接口吗?

于 2012-10-19T16:20:59.130 回答
0

正如 JohnnyHK 所提到的,使用流是正确的解决方案。使用fs.createReadStream从文件系统创建流:

fs.createReadStream('file.txt', {encoding: 'ASCII'}).pipe(process.stdout)
于 2014-09-25T00:33:30.743 回答