繁体   English   中英

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

[英]How do I force write to file using StreamWriter?

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

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

确保将代码包装在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块中using ,以确保它被正确处理。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM