如何将所有文件刷新到硬盘驱动器,以便WinRAR可以存档它们?

时间:2014-09-30 10:13:46

标签: c# windows file winapi winrar

我想将所有缓存的文件(特别是日志)刷新到硬盘驱动器。当我的软件出错时,我想拥有完整的日志文件并收集它们进行调试。

我正在使用WinRAR来收集它们。(您可以使用记事本打开缓存的文件但WinRar由于某种原因无法找到它们)但是当发生错误时我尝试rar所有调试有趣的文件,它无法收集仍然可以追加的最后一个日志文件。

我知道我可以将FlushFileBuffers用于那个文件。但是,如果我有一些和其他文件和和?有没有其他方法来完成文件写入?如果花费太长时间并不重要。它是出现错误/紧急情况的。

修改

  • 如果出现错误,也会保存一些图像* .bmp。
  • 我使用File.AppendText(...)作为日志。

另一个编辑:

  • 获取我的最新日志文件(为我解决),请参阅接受的答案
  • 要为WinRar刷新所有文件以便能够存档,我可能必须确保它们都已关闭此操作。

解决方案:

  • 关闭打开的文件(正常工作)
  • 将WinRar与开关-dh(未经验证)
  • 一起使用

2 个答案:

答案 0 :(得分:1)

问题不是你需要冲洗。刷新是将缓存或缓冲数据推送到其真实存储位置的过程。在这种情况下磁盘。

但问题是该文件是以共享模式打开的,该模式阻止WinRAR将文件添加到存档中。因此,您的问题的解决方案是关闭文件,然后执行存档。

答案 1 :(得分:0)

我不知道您的文件操作的确切实现,但您可以从IDisposable接口继承您的logwriters和其他“写入文件”内容。这将要求您实现Dispose方法,每次对象破坏时都必须调用该方法。在Dispose方法内部,您必须执行将数据刷新到文件所需的所有内容。