我总是streamwriter writer = new StreamWriter(file)用来写文件.问题是它实际上不会写入文件,直到writer.close().
如果在类创建和类关闭之间发生了一些不好的事情(并且程序永远不会到达编写器关闭),我将不会在文件中获得任何信息.如何在创建和关闭之间强制写入?
确保将代码包装在using语句中:
using (var writer = new StreamWriter(file))
{
// do your writing
}
Run Code Online (Sandbox Code Playgroud)
这将通过为您处理(并刷新和关闭)流来帮助"清理",例如,Close()如果在实例化流之后抛出未处理的异常将无法调用.以上基本相当于:
{
var writer = new StreamWriter(file);
try
{
// do your writing
}
finally
{
if (writer != null)
((IDisposable)writer).Dispose();
}
}
Run Code Online (Sandbox Code Playgroud)
注意:任何实现IDisposable接口的东西都应该在一个using块中使用,以确保它被正确处理.
如果在编写器关闭之前将任何挂起的写入实际写入磁盘很重要,则可以使用Flush.
话虽如此,听起来你真正的问题是你应该在你应该的时候关闭你的作家,至少在某些情况下.一旦你完成了写作,你应该关闭作者(即使在例外的情况下).您可以使用using(或显式try/finally块,如果需要)确保编写器始终关闭.
| 归档时间: |
|
| 查看次数: |
1735 次 |
| 最近记录: |