【问题标题】:How do I force write to file using StreamWriter?如何使用 StreamWriter 强制写入文件?
【发布时间】:2014-06-22 04:42:43
【问题描述】:

我总是使用streamwriter writer = new StreamWriter(file) 来写入文件。问题是直到writer.close() 才真正写入文件。

如果在类创建和类关闭之间发生了一些不好的事情(并且程序永远不会到达编写器关闭),我不会在文件中获得任何信息。如何在创建和关闭之间强制写入?

【问题讨论】:

  • 我也需要这方面的帮助。下面的解决方案对我没有帮助,因为我想在程序仍在运行并积极写入文件时从文件中提取内容。

标签: c# streamwriter


【解决方案1】:

确保您的代码包含在 using 语句中:

using (var writer = new StreamWriter(file))
{
    // do your writing
}

这将通过为您处理(以及刷新和关闭)流来帮助“清理”,例如在流实例化后抛出未处理的异常时不会调用 Close() 的情况。以上基本上相当于:

{
    var writer = new StreamWriter(file);
    try
    {
        // do your writing
    }
    finally
    {
        if (writer != null)
            ((IDisposable)writer).Dispose();
    }
}

注意:任何实现IDisposable 接口的东西都应该在using 块中使用,以确保它被正确处理。

【讨论】:

    【解决方案2】:

    如果重要的是在写入器关闭之前将任何挂起的写入实际写入磁盘,您可以使用Flush

    话虽如此,听起来你真正的问题是你没有在应该关闭的时候关闭你的 writer,至少在某些情况下是这样。写完之后,无论如何都应该关闭作者(即使发生异常)。您可以使用using(或明确的try/finally 块,如果需要)来确保编写器始终关闭。

    【讨论】:

    • 我遇到了和 OP 一样的问题。即使在调试过程中停止它,也可以使用 Flush 写入文件。谢谢!
    猜你喜欢
    • 2016-05-03
    • 2020-05-23
    • 1970-01-01
    • 2014-02-22
    • 2018-08-24
    • 2011-10-29
    • 2011-08-29
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多