2017-07-09 10 views
1

JSONファイルは6 GBです。次のコードでそれを読んだとき、Javascript大きなファイルの読み込みに失敗しました

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) 

は誰かは、助けてくださいもらえますか?

+0

の可能性のある重複https://stackoverflow.com/([Node.jsのはfs.readFileSyncで大きなファイルを読みます]質問/ 29766868/node-js-read-big-file-with-fs-readfilesync) –

答えて

2

Bufferの最大サイズは、readFileSync()が内部でファイルデータを保持するために使用するもので、約2GBです(ソース:https://nodejs.org/api/buffer.html#buffer_buffer_kmaxlength)。あなたはおそらく、あなたのファイルを処理するために、JSONStreamのように、ストリーミングJSONパーサーを必要とする

const JSONStream = require('JSONStream'); 
const fs   = require('fs'); 

fs.createReadStream('large_file.json') 
    .pipe(JSONStream.parse('*')) 
    .on('data', entry => { 
    console.log('entry', entry); 
    }); 
関連する問題