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

C# 为什么空文本文件包含3个字节?,c#,.net,file,text,C#,.net,File,Text,我在vs2010的C#项目中使用了一个文本文件。我添加到解决方案中,并将其“复制输出”设置为“始终复制”。当我使用以下代码时,它会给出前导三个字节或utf8中一个字节的文本结果。我查看了windows资源管理器的文件属性,它的大小显示为3个字节 public static string ReadFile(string fileName) { FileStream fs = null; try {

我在vs2010的C#项目中使用了一个文本文件。我添加到解决方案中,并将其“复制输出”设置为“始终复制”。当我使用以下代码时,它会给出前导三个字节或utf8中一个字节的文本结果。我查看了windows资源管理器的文件属性,它的大小显示为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(不带签名)保存文件来避免这些问题。

问题在于如何创建空文本文件。这就是添加这些字节的原因。我在保存时使用vs2010。