2013-08-29 25 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

相關問題