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

时间:2013-08-29 16:31:03

标签: c# .net file text

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

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

1 个答案:

答案 0 :(得分:9)

所以,你看到的那三个字节是我猜的unicode文件的byte order marker。对于UTF-8,它是三个字节。

您可以通过使用没有签名的UTF-8保存文件来避免这些。