速く汚れたものについては、これを使用します。この場合、ログ・ダンプだ - 私は本当に私が得るどのように多くのラインを気にしない、私はちょうど終わり(numBytes
)で束にしたい:
cmdLogReader = new System.IO.StreamReader(cmdLogFileIn);
if (cmdLogReader.BaseStream.Length < (numBytes - 1)) {
return cmdLogReader.ReadToEnd;
} else {
cmdLogReader.BaseStream.Seek(-numBytes, System.IO.SeekOrigin.End);
cmdLogReader.ReadLine();
return cmdLogReader.ReadToEnd;
}
あなたは常に先頭にBaseStream.Length
を救うことができるし、それを使用して、次回にどのくらい戻るかを計算します(つまり、numBytes
がBaseStream.Length - previousBaseStreamLength
などになります)。これにより、最後の読み取り以降に追加されたものを連続呼び出しできるようになります。
ReadLine
コールをスキップしなければならない場合があります。これは、実際にランダムな量をバックトラッキングした後、最も近い行まで移動するためだけです。あなたがライン境界に着陸しようとしていることを知っているならば、ただReadToEnd
にすることができます。
これはややこしい実装ですが、非常に速いので、私はそれを使用しています。
あなたは、あなたがそのような目的のために意図した複数のファイルやDBにファイルを分割することができTail.NET http://www.codeproject.com/Articles/7568/Tail-NET – itsmatt
に見えるかもしれません。しかし、私はわずか100MBのファイルでどのくらいの利益を提供するか分からない。ストリームは開始インデックスを持つ傾向があります。なぜそれを使用しないのですか? –