2013-08-29 33 views
9

Tôi đang sử dụng tệp văn bản bên trong dự án C# của mình trong vs2010. Tôi đã thêm vào giải pháp và thiết lập "Copy Output" của nó thành "Copy Always". Khi tôi sử dụng các mã sau đây, nó mang lại cho tôi kết quả văn bản với hàng đầu ba byte hoặc trong một byte một byte. Tôi đã xem các thuộc tính tệp của windows explorers, kích thước của nó xuất hiện 3 byte.Tại sao tệp văn bản trống chứa 3 byte?

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

Tại sao điều này giống như trên? Làm thế nào tôi có thể đọc các tập tin văn bản mà không có lớp StreamReader?

Bất kỳ trợ giúp nào, mã số sẽ rất được đánh giá cao.

+0

Vấn đề là cách bạn tạo tệp văn bản trống. Đây là những gì đang thêm những byte đó. – ja72

Trả lời

9

Vì vậy, ba byte bạn đang xem là byte order marker đối với tệp unicode tôi đoán. Đối với UTF-8, nó là ba byte.

Bạn có thể tránh chúng bằng cách lưu tệp bằng UTF-8 mà không cần chữ ký.

+0

Tôi đang sử dụng vs2010 trong khi lưu. – Mesut

Các vấn đề liên quan