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)字符。有人知道这是什么原因吗?
使用编码。UnicodeEncoding代替。您的文件是以UTF-16编码的,而不是UTF-8。
该文件可能是UTF-16文件,而不是UTF-8文件。试着用Encoding.Unicode
代替Encoding.UTF8
。
听起来文件实际上是UTF-16编码的。在GetString()中更改UTF-8