問題タブ [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.
node.js - 巨大なログ ファイルを 1 行ずつ読み取り、ノードでランダム アクセスしますか?
ファイルを解析し、ノード/エレクトロン アプリの適切にフォーマットされたテーブルの行からフィールドを表示するログ ファイル リーダーに取り組んでいます。
ファイルが小さい場合は、ファイルを 1 行ずつ読み取って解析し、各行から抽出したフィールドをデータ構造に格納して、クライアントがファイル全体を前後にスクロールできるようにします。
これらのファイルは数ギガバイトになる可能性があるため、もっと複雑なことを行う必要があります。
私の現在の考えは、次のいずれかです。
- readline パッケージを介してファイル全体を読み取ります。
- 行末のオフセットを追跡する
- ファイルが読み込まれたら、関連するデータを抽出して視覚的に表示できるように、下部 (つまり最新) の 50 行ほどを解析します。
- クライアントが 50 行を超えてスクロールしたい場合は、オフセットを使用して前の行に移動します (fs.read(..) 経由)。
別の方法:
- fs.read() を使用して、最後までまっすぐ進みます
- 改行文字が見つかるまで逆方向に作業する
- クライアントがファイルをスクロールしたい場合は、必要に応じて行オフセットを計算します
tail -f
これは、建物スタイルの機能さえ考慮していません。
少なくともエンコーディングと、Windows と Linux のスタイルの行末を考慮する必要がありascii
ますutf8
。
これは多くの低レベルの作業です。
すでに機能を提供しているライブラリはありますか?
これを自分で行う場合、ここで言及していない主な注意事項はありますか? 私は 20 年間、低レベルのランダム アクセス プログラミングを行っていません。