2016-02-21 12 views
5

Tôi đang cố gắng sử dụng StreamWriter để đăng nhập tìm kiếm mỗi khi có ai đó tìm kiếm trong chương trình của tôi. Tôi có thể nhận được StreamWriter để viết một tập tin mới nhưng nó không tạo ra bất kỳ nội dung nào. Tôi đã thử tìm kiếm google cho việc sử dụng thích hợp và với tôi có vẻ như tôi đã thực hiện nó một cách chính xác. Nếu bạn có thể đọc mã của tôi và cho tôi biết tôi đã sai ở đâu thì tôi sẽ rất biết ơn!C# - StreamWriter đang tạo tệp của tôi nhưng không có nội dung

StreamWriter write = new StreamWriter("searchLogFile.dat"); 
write.WriteLine(gameTitle + " === " + string.Format("{0:C}", saleValue)); 

Vì vậy, nó nên in một dòng cái gì đó dọc theo dòng: "TITLE === $ 100.00"

Trả lời

9

Bạn chưa đóng nhà văn. Các nhà văn đệm dữ liệu, vì vậy nếu bạn chỉ để cho nó có được thu gom rác mà không xả hoặc đóng nó, xử lý tập tin sẽ được đóng lại mà không bao giờ ghi dữ liệu vào tập tin.

Bạn lý tưởng nên làm điều này với một tuyên bố using:

using (StreamWriter write = new StreamWriter("searchLogFile.dat")) 
{ 
    write.WriteLine(gameTitle + " === " + string.Format("{0:C}", saleValue)); 
} 

Bằng cách đó các nhà văn sẽ đóng cửa ngay cả khi một ngoại lệ được ném. Có thói quen sử dụng các câu lệnh using cho các loại thực hiện IDisposable.

Tôi cũng khuyên bạn nên sử dụng File.WriteAllText nếu bạn chỉ muốn viết một giá trị cho một tệp. Bạn cũng có thể sử dụng phiên bản nạp chồng của TextWriter.WriteLine mà chấp nhận định dạng chuỗi để làm cho mã này đơn giản hơn:

writer.WriteLine("{0} === {1:C"}, gameTitle, saleValue); 

Hoặc với C# 6:

writer.WriteLine($"{gameTitle} === {saleValue:C}"); 

Hoặc tất cả trong một bước:

File.WriteAllText("searchLogFile.dat", $"{gameTitle} === {saleValue:C}"); 
Các vấn đề liên quan