为什么空文本文件包含3个字节?

我在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类的情况下读取文本文件?

任何帮助,代码将非常感激。

所以,你看到的那三个字节是我猜的unicode文件的字节顺序标记 。 对于UTF-8,它是三个字节。

您可以通过使用UTF-8保存文件而无需签名来避免这些问题。