FileStream每隔一个字符返回空字符

本文关键字:字符 一个 返回 FileStream | 更新日期: 2023-09-27 17:50:59

我似乎在c#中遇到了一些文件流问题。我试图从一个非常大的文本文件中读取最后一行,10mb,这是由MSI安装程序生成的。

我使用的代码是:

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

显然,读取的流每隔一个字符包含一个''0' (null)字符。有人知道这是什么原因吗?

FileStream每隔一个字符返回空字符

使用编码。UnicodeEncoding代替。您的文件是以UTF-16编码的,而不是UTF-8。

该文件可能是UTF-16文件,而不是UTF-8文件。试着用Encoding.Unicode代替Encoding.UTF8

听起来文件实际上是UTF-16编码的。在GetString()中更改UTF-8