2013-08-29 17 views
9

Ich verwende eine Textdatei in meinem C# -Projekt in vs2010. Ich habe die Lösung hinzugefügt und ihre "Ausgabe kopieren" auf "Immer kopieren" gesetzt. Wenn ich die folgenden Codes verwende, gibt es mir das Text-Ergebnis mit führenden drei Bytes oder in utf8 ein Byte. Ich schaute auf Windows Explorer-Dateieigenschaften, seine Größe erscheint 3 Bytes.Warum leere Textdatei enthält 3 Bytes?

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; 
      } 
     } 

Warum ist das wie oben? Wie kann ich Textdateien ohne StreamReader-Klasse lesen?

Jede Hilfe, Codes wird sehr geschätzt.

+0

Das Problem ist, wie Sie die leere Textdatei erstellen. Dies ist, was diese Bytes hinzufügt. – ja72

Antwort

9

Also, diese drei Bytes, die Sie sehen, sind die byte order marker für die Unicode-Datei, die ich rate. Für UTF-8 sind es drei Bytes.

Sie können diese vermeiden, indem Sie die Datei mit UTF-8 ohne Signatur speichern.

+0

Ich verwende vs2010 beim Speichern. – Mesut

Verwandte Themen