0

私は本当に本当に大きなファイルを扱っています。私はギガバイトの大きさについて話している。

テキストファイルは常に更新されているため、特定のインデックスから1行を読み取ることができる必要があります。これを達成するための最速の解決策は何ですか?私はスペース要件にまったく制約されていません。

編集:より詳細な情報が投稿されました。読む必要のある次のテキストがあるとします。

Jun 21 09:47:53 ez-x5 user.debug if_comm: [TX] 30 40 05 
Jun 21 09:47:53 ez-x5 user.debug if_comm: [RX] 04 
Jun 21 09:47:53 ez-x5 user.debug if_comm: [TX] 30 40 05 
Jun 21 09:47:54 ez-x5 user.debug if_comm: [RX] 02 30 40 0f 30 32 31 23 64 31 30 32 30 64 64 49 49 49 49 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 64 03 0b 

このテキストファイルは、ロガーによって一貫して更新されます。テキストファイルが更新されたら、ログに追加されたものの新しい行(\ nで区切られた)を読み取る必要があります。

4

3 に答える 3

1

FileStreamオブジェクトを使用すると、Positionプロパティを変更することで、ファイルにランダムアクセスを取得できます。

ここを参照してください。

ストリーム内の位置をシークする位置を設定するときは、ファイル内のどこから検索を開始するかを事前に知っておく必要があります。

于 2012-07-23T06:57:31.907 に答える
0

varialeを使用lineCounterして、読むときにインクリメントしますStreamReader.ReadLine()。特定のインデックス(つまり)に到達したら、lineCounter==SpecificIndex読み取りを停止します。

于 2012-07-23T06:51:46.890 に答える
0

を使用するMemoryMappedFileと、ファイルの一部をメモリにマップできます(ファイル全体を読み取らないようにするため)。これをと組み合わせることでFileSystemWatcher、非常に優れたソリューションを実現できるはずです。

于 2012-07-23T07:02:59.237 に答える