gpt4 book ai didi

c# - StreamWriter.Flush() 和 StreamWriter.Close() 有什么区别?

转载 作者:IT王子 更新时间:2023-10-29 03:48:48 25 4
gpt4 key购买 nike

StreamWriter.Flush()StreamWriter.Close() 在功能上有什么区别?

当我的数据没有正确写入文件时,我将 Flush()Close() 添加到我的代码末尾。但是,我意识到添加 任一个 Flush()Close() 允许正确写入数据。

当我阅读 MSDN 文档时,我无法准确了解这些方法中的每一种方法的作用;我只是想出一个或另一个是确保数据正确写入所必需的。任何进一步的解释将不胜感激。


其中 s 是要写入的字符串,这是我的代码目前的样子:

StreamWriter sw = File.CreateText("TextOutput.txt");
sw.Write(s);
sw.Flush();
sw.Close();

根据答案的反馈,我在 using block 中重写了我的代码,该 block 实现了 IDisposable 并将自动负责将流写入文件当对象被释放时:

using (StreamWriter sw = File.CreateText("TextOutput.txt"))
{
sw.Write(s);
}

最佳答案

StreamWriter.Flush() 可以在您需要清除缓冲区的任何时候调用,流将保持打开状态。

StreamWriter.Close() 用于关闭流,此时缓冲区也被刷新。

但是您真的不需要调用其中任何一个。每当我在代码中看到 .Close() 时,我都会将其视为代码味道,因为这通常意味着意外异常可能导致资源保持打开状态。您应该做的是在 using block 中创建您的 StreamWriter 变量,如下所示:

using (var writer = new StreamWriter("somefilepath.txt"))
{
// write a bunch of stuff here
} // the streamwriter WILL be closed and flushed here, even if an exception is thrown.

关于c# - StreamWriter.Flush() 和 StreamWriter.Close() 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2417978/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com