JSON 文件大小为 6 GB。当用下面的代码读取时,
var fs = require('fs');
var contents = fs.readFileSync('large_file.txt').toString();
它有以下错误:
buffer.js:182
throw err;
^
RangeError: "size" argument must not be larger than 2147483647
at Function.Buffer.allocUnsafe (buffer.js:209:3)
at tryCreateBuffer (fs.js:530:21)
at Object.fs.readFileSync (fs.js:569:14)
at Object.<anonymous> (/home/readHugeFile.js:4:19)
at Module._compile (module.js:569:30)
at Object.Module._extensions..js (module.js:580:10)
at Module.load (module.js:503:32)
at tryModuleLoad (module.js:466:12)
at Function.Module._load (module.js:458:3)
at Function.Module.runMain (module.js:605:10)
有人可以帮忙吗?
最大尺寸为Buffer
,这就是readFileSync()
内部用于保存文件数据,大约2GB(来源:https://nodejs.org/api/buffer.html#buffer_buffer_kmaxlength).
您可能需要一个流式 JSON 解析器,例如JSONStream,处理您的文件:
const JSONStream = require('JSONStream');
const fs = require('fs');
fs.createReadStream('large_file.json')
.pipe(JSONStream.parse('*'))
.on('data', entry => {
console.log('entry', entry);
});
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)