ホームページ > ウェブフロントエンド > jsチュートリアル > Node.js で大きなファイルを 1 行ずつ効率的に読み取るにはどうすればよいですか?

Node.js で大きなファイルを 1 行ずつ効率的に読み取るにはどうすればよいですか?

Susan Sarandon
リリース: 2024-11-28 20:09:11
オリジナル
496 人が閲覧しました

How to Efficiently Read Large Files Line by Line in Node.js?

Node.js でファイルを 1 行ずつ読み取る

この質問では、Node.js で大きなファイルを一度に 1 行ずつ効率的に読み取る方法について説明します。提供されている Quora の例では STDIN 入力についてこれを示していますが、ファイルベースのアプローチへの変換には慎重な検討が必要です。

fs.open() と process.stdin を使用して行を読み取ろうとすると失敗します。 () は、process.stdin のようなストリーミング インターフェイスを提供しません。これを解決するには、Node.js v0.12 で導入された readline コア モジュールを利用できます。

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 の代替構文

代わりに、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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート