この質問では、Node.js で大きなファイルを一度に 1 行ずつ効率的に読み取る方法について説明します。提供されている Quora の例では STDIN 入力についてこれを示していますが、ファイルベースのアプローチへの変換には慎重な検討が必要です。
fs.open() と process.stdin を使用して行を読み取ろうとすると失敗します。 () は、process.stdin のようなストリーミング インターフェイスを提供しません。これを解決するには、Node.js v0.12 で導入された readline コア モジュールを利用できます。
readline モジュールは、大きなファイルを 1 行ずつ処理する便利な方法を提供します。 -line を非同期的に実行します。以下に例を示します:
const fs = require('fs'); const readline = require('readline'); async function processLineByLine() { const fileStream = fs.createReadStream('input.txt'); const rl = readline.createInterface({ input: fileStream, crlfDelay: Infinity // Handle CR LF as a single line break }); for await (const line of rl) { console.log(`Line from file: ${line}`); } } processLineByLine();
代わりに、readline モジュールを同期的に使用することもできます:
const lineReader = require('readline').createInterface({ input: fs.createReadStream('file.in') }); lineReader.on('line', (line) => { console.log('Line from file:', line); }); lineReader.on('close', () => { console.log('all done'); });
この例では、 lineReader は、ファイル内の各行に対して「line」イベントを発行し、すべての行が終了すると「close」イベントを発行します。
注: 公式 Node.js ドキュメントには、上記と同様の例が含まれています。
以上がNode.js で大きなファイルを 1 行ずつ効率的に読み取るにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。