我似乎在C#中遇到了一些文件流问题。 我试图读取由MSI安装程序生成的非常大的文本文件10mb的最后一行。
我使用的代码是:
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'(空)字符。 有谁知道造成这种情况的原因是什么?
答案 0 :(得分:7)
该文件可能是UTF-16文件,而不是UTF-8文件。只需尝试使用Encoding.Unicode
代替Encoding.UTF8
。
答案 1 :(得分:7)
请改用Encoding.UnicodeEncoding。您的文件采用UTF-16编码,而不是UTF-8。
答案 2 :(得分:3)
听起来这个文件实际上是UTF-16编码的。在GetString()中更改UTF-8。