4

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' (ヌル) 文字が含まれているようです。誰がこれを引き起こしているのか知っていますか?

4

3 に答える 3

7

このファイルはおそらくUTF-16ファイルであり、UTF-8ファイルではありません。Encoding.Unicodeの代わりに使用してみてくださいEncoding.UTF8

于 2013-01-07T21:10:19.413 に答える
7

代わりにEncoding.UnicodeEncodingを使用してください。ファイルはUTF-8ではなくUTF-16でエンコードされています。

于 2013-01-07T21:11:46.923 に答える
3

ファイルは実際には UTF-16 でエンコードされているようです。GetString() で UTF-8 を変更します。

于 2013-01-07T21:15:55.447 に答える