如何使用StreamWriter强制写入文件?

时间:2014-05-05 19:10:05

标签: c# streamwriter

我总是使用streamwriter writer = new StreamWriter(file)来写入文件。问题是在writer.close()之前它实际上不会写入文件。

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

2 个答案:

答案 0 :(得分:9)

确保您的代码包含在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块中使用,以确保它已正确处理。

答案 1 :(得分:7)

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

话虽如此,听起来你真正的问题是你应该在你应该的时候关闭你的作家,至少在某些情况下。一旦你完成了写作,你应该关闭作者(即使在例外的情况下)。如果需要,您可以使用using(或明确的try/finally块来确保编写器始终处于关闭状态。