//C#
using (System.IO.StreamWriter writer =
new System.IO.StreamWriter("me00.txt", true))
{
writer.WriteLine("Hey"); //saved
}
System.IO.StreamWriter writer02 = new System.IO.StreamWriter("me01.txt", true);
writer02.WriteLine("Now hey x2"); //not saved
创建了文件me00.txt和me01.txt,但只保存了第一个文件的内容。
me00.txt会排队嘿。 me01.txt将是一个空的txt文件; “现在嘿x2”没有保存。
关键词“使用”会导致这种观察?
答案 0 :(得分:6)
您不必使用“使用”。它只是让你远离更多输入的快捷方式......
另一种方法是将整个事物嵌套在try-finally结构中,如下所示:
System.IO.StreamWriter writer = null;
try
{
writer = new System.IO.StreamWriter("me00.txt", true);
writer.WriteLine("Hey");
}
finally
{
if (writer != null)
writer.Dispose();
)
当处理者被处理时,它也关闭,这是你缺少的一步。 使用提供了一种简洁的方法来紧凑地完成所有这些工作。
答案 1 :(得分:1)
冲洗Buffer。它与using语句一起使用,因为在处理/关闭流时刷新缓冲区。
只需致电writer02.Flush();
来自StreamWriter.Flush上的MSDN:
刷新流不会刷新其底层编码器,除非您明确调用Flush或Close
此外,您需要处理Stream。完成流后,不要忘记调用Dispose方法 using语句将为您完成。如果您调用Dispose,则可能不需要调用Flush。
答案 2 :(得分:1)
添加:
writer02.Close();
--------------:
public void Test()
{
//C#
using (System.IO.StreamWriter writer = new System.IO.StreamWriter("me00.txt", true))
{
writer.WriteLine("Hey");
}
}
因为此代码与代码相同
public void Test()
{
//C#
System.IO.StreamWriter writer = null;
try
{
writer = new System.IO.StreamWriter("me01111.txt", true);
writer.WriteLine("Hey"); //saved
}
finally
{
if (writer != null) //Flush data
{
((IDisposable)writer).Dispose();
}
}
}