動かすthis answerFileStream.Seek(-1)
のロットを使用するとカーテンの下で何が起こっているのだろうと思っていました。FileStream.Seek vs. Buffered Reading
using (var fs = File.OpenRead(filePath))
{
fs.Seek(0, SeekOrigin.End);
int newLines = 0;
while (newLines < 3)
{
fs.Seek(-1, SeekOrigin.Current);
newLines += fs.ReadByte() == 13 ? 1 : 0; // look for \r
fs.Seek(-1, SeekOrigin.Current);
}
byte[] data = new byte[fs.Length - fs.Position];
fs.Read(data, 0, data.Length);
}
個人的に私がバッファに2048バイトのように読んで、文字のためにそのバッファを検索しましたでしょう:私は答えを再投稿します。明確にするため
。
Reflectorを使用すると、内部的にはSetFilePointerが使用されていることがわかりました。
ファイルをキャッシュして後方に読むWindowsに関するドキュメントはありますか? Seek(-1)
を連続して使用している場合、Windowsはバッファを「後方に」バッファして調べるか、現在の位置から先読みしますか?
一方で、大部分の人が良いキャッシングを行うWindowsに同意しますが、一方で "ファイルを逆方向に読む"にはすべてのチャンクを読み取ってそのチャンクで操作することが含まれます。
深刻なピアレビューをやっていますか? – ChaosPandion
@ChaosPandion:私はあなたのコメントを評価しなかった、私はちょうど興味があった。 – VVS