2017-02-27 23 views
1

大きなファイルを読み込もうとしています。現在、大きなファイルを読み込む方法についてはNodeJSのドキュメントに従っていますが、いくらか大きなファイル(〜1.1 MB、〜20k行)を読むと、Electronアプリケーションが約6分間フリーズして、アプリケーションがすべて読み込みを完了します台詞。NodeJS + Electron - 大容量ファイルの最適化

ここに私の現在のコード

var fileContents = document.getElementById("fileContents") 
     //first clear out the existing text 
     fileContents.innerHTML = "" 
     if(fs.existsSync(pathToFile)){ 
      const fileLine = readline.createInterface({ 
       input: fs.createReadStream(pathToFile) 
      }) 

      fileLine.on('line', (line) => { 
       fileContents.innerHTML += line + "\n" 
      }) 


     } else { 
      fileContents.innerHTML += fileNotFound + "\n" 
      console.log('Could not find file!!') 
     } 

だと私は、ターゲットとしていたタグが<xmp>タグです。

大きなファイルを表示する方法は何ですか?

答えて

1

ストリームは、ファイル全体をメモリにロードせずに一度に1行を処理できるため、高性能に役立つことがよくあります。

この場合、各行を読み込んで、既存の文字列(fileContents.innerHTML)に連結して+=とします。すべての連結は、ファイルの内容全体を1つの文字列としてロードするよりも遅くなる可能性があります。さらに悪いことに、行を読み込むたびにHTMLを出力しています。だから、20k行でレンダリングエンジンにHTMLのレンダリングを20,000回依頼しています!

代わりに、ファイルを1つの文字列として読み込み、HTMLを1回だけ出力してみてください。

fs.readFile(pathToFile, (err, data) => { 
    if (err) throw err; 
    fileContents.innerHTML = data; 
}); 
+0

私が間違っていることの背後にある説明に感謝します!私はそれをテストし、ファイルは数分ではなく数秒で表示されます! – akcorp2003

関連する問題