2013-08-29 17 views
9

vs2010'da C# projemin içinde bir metin dosyası kullanıyorum. Çözüme ekledim ve "Kopya Çıktısı" nı "Her Zaman Kopyala" olarak ayarladım. Aşağıdaki kodları kullandığımda, bana üç bayt önde gelen veya utf8 bir bayt ile metin sonucu verir. Windows kaşifleri dosya özelliklerine baktım, boyutu 3 bayt.Neden Boş Metin Dosyası 3 bayt İçeriyor?

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

Bu neden yukarıdaki gibi? StreamReader sınıfı olmayan metin dosyalarını nasıl okuyabilirim?

Herhangi bir yardım, kodlar çok takdir edilecektir.

+0

Sorun, boş metin dosyasını nasıl oluşturduğunuzdur. Bu baytları ekleyen şey budur. – ja72

cevap

9

Yani, gördüğünüz üç bayt, tahmin ettiğim unicode dosyası için byte order marker. UTF-8 için üç bayttır.

Dosyayı imza olmadan UTF-8 kullanarak kaydederek bunlardan sakınabilirsiniz.

+0

Kaydederken vs2010 kullanıyorum. – Mesut

İlgili konular