2013-08-29 23 views
9

我在vs2010中的C#项目中使用了一个文本文件。我添加到解决方案并将其“复制输出”设置为“始终复制”。当我使用下面的代码时,它给了我带有前三个字节的文本结果或者一个字节的utf8文本结果。我看着windows探索者文件属性,其大小显示为3个字节。为什么空文本文件包含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

问题是你如何创建空的文本文件。这就是添加这些字节的内容。 – ja72

回答

9

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

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

+0

我在保存时使用vs2010。 – Mesut

相关问题