我在vs2010的C#项目中使用了一个文本文件。我添加到解决方案并将其“复制输出”设置为“始终复制”。当我使用下面的代码时,它给出了前导三个字节或utf8一个字节的文本结果。我查看了windows explorers文件属性,其大小显示为3个字节。
public static string ReadFile(string fileName)
{
FileStream fs = null;
try
{
fs = new FileStream(fileName, FileMode.Open);
FileInfo fi = new FileInfo(fileName);
byte[] data = new byte[fi.Length];
fs.Read(data, 0, data.Length);
fs.Close();
fs.Dispose();
string text = Encoding.ASCII.GetString(data);
return text;
}
catch (Exception)
{
if(fs != null)
{
fs.Close();
fs.Dispose();
}
return string.Empty;
}
}
为什么这样如上?如何在没有StreamReader类的情况下阅读文本文件?
任何帮助,代码都将非常感激。
答案 0 :(得分:9)
所以,你看到的那三个字节是我猜的unicode文件的byte order marker。对于UTF-8,它是三个字节。
您可以通过使用没有签名的UTF-8保存文件来避免这些。