C# の Filestream に問題があるようです。MSI インストーラーによって生成された 10 MB の非常に大きなテキスト ファイルから最後の行を読み取ろうとしています。
私が使用しているコードは次のとおりです。
string path = @"C:\uninstall.log";
byte[] buffer = new byte[100];
using (FileStream fs = new FileStream(path, FileMode.Open, FileAccess.Read))
{
long len = fs.Length;
fs.Seek(-100, SeekOrigin.End);
fs.Read(buffer, 0, 100);
}
string foo = Encoding.UTF8.GetString(buffer);
Console.WriteLine("\"" + foo + "\"");
ただし、出力は次のようになります。
H E L L O W O R L D ! ! ! B L A H B L A H
読み取られるストリームには、1 文字おきに '\0' (ヌル) 文字が含まれているようです。誰がこれを引き起こしているのか知っていますか?