問題タブ [low-level-io]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票する
0 に答える
35 参照

node.js - 巨大なログ ファイルを 1 行ずつ読み取り、ノードでランダム アクセスしますか?

ファイルを解析し、ノード/エレクトロン アプリの適切にフォーマットされたテーブルの行からフィールドを表示するログ ファイル リーダーに取り組んでいます。

ファイルが小さい場合は、ファイルを 1 行ずつ読み取って解析し、各行から抽出したフィールドをデータ構造に格納して、クライアントがファイル全体を前後にスクロールできるようにします。

これらのファイルは数ギガバイトになる可能性があるため、もっと複雑なことを行う必要があります。

私の現在の考えは、次のいずれかです。

  1. readline パッケージを介してファイル全体を読み取ります。
  2. 行末のオフセットを追跡する
  3. ファイルが読み込まれたら、関連するデータを抽出して視覚的に表示できるように、下部 (つまり最新) の 50 行ほどを解析します。
  4. クライアントが 50 行を超えてスクロールしたい場合は、オフセットを使用して前の行に移動します (fs.read(..) 経由)。

別の方法:

  1. fs.read() を使用して、最後までまっすぐ進みます
  2. 改行文字が見つかるまで逆方向に作業する
  3. クライアントがファイルをスクロールしたい場合は、必要に応じて行オフセットを計算します

tail -fこれは、建物スタイルの機能さえ考慮していません。

少なくともエンコーディングと、Windows と Linux のスタイルの行末を考慮する必要がありasciiますutf8

これは多くの低レベルの作業です。

すでに機能を提供しているライブラリはありますか?

これを自分で行う場合、ここで言及していない主な注意事項はありますか? 私は 20 年間、低レベルのランダム アクセス プログラミングを行っていません。