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

Mes*_*sut 9 .net c# text file

我在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;
            }
        }
Run Code Online (Sandbox Code Playgroud)

为什么这样如上?如何在没有StreamReader类的情况下阅读文本文件?

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

Dar*_*opp 9

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

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