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

Posted

技术标签:

【中文标题】如何将所有文件刷新到硬盘驱动器,即使 WinRAR 也可以将它们存档?【英文标题】:How to flush all files to hard drive so even WinRAR can archive them? 【发布时间】:2014-09-30 10:13:45 【问题描述】:

我想将所有缓存的文件(尤其是日志)刷新到硬盘。当我的软件出现错误时,我希望拥有完整的日志文件并收集它们以进行调试。

我正在使用WinRAR来收集它们。(你可以用记事本打开缓存的文件,但WinRar由于某种原因找不到它们)但是当出现错误并尝试全部rar时对于调试感兴趣的文件,它无法收集仍然打开以进行追加的最后一个日志文件。

我知道我可以为那个文件使用FlushFileBuffers。但是,如果我有一些文件和其他文件 and and and 怎么办?还有另一种方法来完成文件写入吗?如果时间太长也没关系。以防出现错误/紧急情况。

编辑:

还有一些图像会在出现错误时保存到 *.bmp。 我使用File.AppendText(...) 记录日志。

另一个编辑:

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

解决方案:

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

【问题讨论】:

文件怎么写?如果你使用StreamWriter,你可以使用Flush 方法。 @SriramSakthivel File.AppendText() 用于日志。 您需要关闭文件而不是刷新它们 @DavidHeffernan 是的,我也注意到了这一点。当我关闭它时,WinRar 会获取日志文件。我只是以“易失风格”使用日志记录(随时从任何线程写入日志文件)。但不能接受 cmets。 WinRAR 还有-dh 开关,它可以归档当前由应用程序打开以进行写入的文件。此处不应使用它,因为在归档之前关闭每个日志文件总是更好,因为这会将文件流缓冲区刷新到存储介质。但我仍然想增加这种可能性。请注意,即使使用开关-dh 也必须可以读取文件。有关-dh 的更多详细信息,请查看 WinRAR 程序文件夹或 WinRAR 帮助中的Rar.txt 【参考方案1】:

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

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

【讨论】:

【参考方案2】:

我不知道你的文件操作的具体实现,但你可以从IDisposable 接口继承你的记录器和其他“写入文件”的东西。这将要求您实现 Dispose 方法,每次对象破坏时都必须调用该方法。在 Dispose 方法中,您必须执行将数据刷新到文件所需的所有工作。

【讨论】:

以上是关于如何将所有文件刷新到硬盘驱动器,即使 WinRAR 也可以将它们存档?的主要内容,如果未能解决你的问题,请参考以下文章

如何在ftp中使用映射到本地硬盘中的网络驱动器?

如何擦除硬盘驱动器

我的电脑为啥一刷新就闪一下蓝屏

如何在exe中执行bat文件? (使用 WinRAR sfx 创建的 exe)

如何将 MySQL 数据库从一个硬盘驱动器移动到另一个硬盘驱动器?

如何列出硬盘驱动器文件夹下的所有文件名?