C# - StreamWriter 正在创建我的文件,但没有内容

本文关键字:文件 我的 StreamWriter 创建 | 更新日期: 2023-09-27 18:35:31

每次有人搜索我的程序时,我都尝试使用 StreamWriter 记录搜索。我可以让StreamWriter编写一个新文件,但它不会创建任何内容。我尝试在谷歌上搜索正确的用途,对我来说,看起来我已经正确地完成了它。如果你能读懂我的代码并告诉我我错在哪里,那么我将非常感激!

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

所以它应该打印一行类似这样的行:"TITLE === $100.00"

C# - StreamWriter 正在创建我的文件,但没有内容

您尚未关闭编写器。编写器缓冲数据,因此,如果您只是让它进行垃圾回收而不刷新或关闭它,则文件句柄将被关闭,而无需将数据写入文件。

理想情况下,您应该使用 using 语句执行此操作:

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

这样,即使引发异常,编写器也会关闭。养成对实现IDisposable的类型使用 using 语句的习惯。

如果您只想将一个值写入文件,我还建议使用 File.WriteAllText。您还可以使用接受格式字符串的 TextWriter.WriteLine 重载来简化此代码:

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

或者使用 C# 6:

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

或者一气呵成:

File.WriteAllText("searchLogFile.dat", $"{gameTitle} === {saleValue:C}");