gpt4 book ai didi

c# - 使用 StreamWriter 和 FileStream 写入 txt 文件

转载 作者:IT王子 更新时间:2023-10-29 04:27:26 24 4
gpt4 key购买 nike

当使用 StreamWriterFileStream 将文本附加到 .NET 4.5 中的现有文件时,我遇到了一些有趣的事情(没有尝试过任何旧框架)。我尝试了两种方法,一种有效,一种无效。我想知道两者之间的区别是什么。

两种方法的顶部都包含以下代码

if (!File.Exists(filepath))
using (File.Create(filepath));

我在 using 语句中创建,因为我通过个人经验发现这是确保应用程序完全关闭文件的最佳方式。

非工作方法:

using (FileStream f = new FileStream(filepath, FileMode.Append,FileAccess.Write))
(new StreamWriter(f)).WriteLine("somestring");

使用此方法,不会有任何内容附加到文件中。

工作方法:

using (FileStream f = new FileStream(filepath, FileMode.Append,FileAccess.Write))
using (StreamWriter s = new StreamWriter(f))
s.WriteLine("somestring");

我用谷歌搜索了一下,但不太清楚要搜索什么,也没有找到任何有用的信息。那么,为什么匿名 StreamWriter 在(非匿名?命名?)StreamWriter 工作的地方失败?

最佳答案

听起来你没有刷新流。

http://msdn.microsoft.com/en-us/library/system.io.stream.flush.aspx

看起来 StreamWriter 在写入最终目的地(在本例中为文件)之前先写入缓冲区。您还可以设置 AutoFlush 属性,而不必显式刷新它。

http://msdn.microsoft.com/en-us/library/system.io.streamwriter.autoflush.aspx

要回答您的问题,当您使用“using” block 时,它会调用 StreamWriter 上的 dispose,后者必须依次调用 Flush。

关于c# - 使用 StreamWriter 和 FileStream 写入 txt 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14657643/

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