优雅地中止 FileStream 写入循环

Posted

技术标签:

【中文标题】优雅地中止 FileStream 写入循环【英文标题】:Gracefully abort FileStream write loop 【发布时间】:2013-03-24 21:01:26 【问题描述】:

我有一个使用 FileStream 将数据写入文件的循环。 在操作过程中,我想中止。 如果我刷新并关闭它,我将在磁盘上有一个部分文件。有没有办法关闭 FileStream 并将其从系统中删除? (在相同的操作中。我知道我可以直接关闭而不是自己删除它)

【问题讨论】:

好吧,别费心冲洗了。是的,只需删除文件即可。 【参考方案1】:

如果你需要处理修改文件...

在您的情况下可能有点矫枉过正,但您可以使用 NTFS transactions。如果您需要中止,只需回滚事务,您修改的文件将恢复到事务开始之前的状态(如果在事务开始之前不存在,则完全消失)。即使您没有明确回滚(例如由于断电),这也将起作用。

或者您可以通过写入不同的文件来模拟事务,然后通过用新文件替换旧文件来“提交”。


否则(如果您只处理创建新文件,而不是修改现有文件)...

您可以在流被关闭/处置后删除finally 块中的文件(正如您已经指出的那样)。

【讨论】:

我想就是这样(使用 finally 块删除部分文件)我不想使用 NTFS 事务,因为我不知道它将在哪个操作系统和哪个 HD 上运行。 ...我想没有“聪明的方法”可以做到这一点....

以上是关于优雅地中止 FileStream 写入循环的主要内容,如果未能解决你的问题,请参考以下文章

FileStream 类读写操作

04_FileStream 类

如何优雅地循环多个列表[重复]

有啥方法可以使用旧的 .net 框架版本异步写入 FileStream 吗?

java线程暂停,优雅结束并中止

FileStream 和 StreamWriter - 如何在写入后截断文件的其余部分?