0

我的程序在系统运行时每小时生成一个信息日志,其中包含各种数据,如访问时间、数据传输和遇到的任何故障/警告。不幸的是,这些日志文件的大小可以从 10,000KB 到 25,000KB 不等,所以一旦它们至少 24 小时旧,我就开始单独压缩它们,这样我的系统在任何时候都只有 24 个解压缩的日志文件。

我需要解决的问题是该软件的一部分是一个“诊断”窗口,用户可以在其中根据文件的创建时间从选定的日期范围加载日志文件,并以易于阅读的格式查看其内容。我知道,为了让文件出现在他们的搜索中,必须有一个例外允许检查 .zip,但我无法访问任何文件数据以查看所述 .zip 文件是否属于日期范围。

我的问题是:它们是我访问压缩文件信息(以及进一步扩展其内容)的一种方式,而无需解压缩文件、进行搜索、重新压缩文件?如果您的日期范围内只有 1 或 2 个文件,解压缩一百个或更多文件似乎工作量太大。

4

2 回答 2

1

您应该在每个压缩文件的文件名中添加一个时间戳。

通常,当您压缩文件时,您会将文件的实际数据转换为不可读的格式。大多数压缩算法(请记住,有很多)都在非常复杂的级别上工作,这就是为什么您确实需要解压缩文件以获取原始数据的原因。(没有免费的午餐。)

幸运的是,文件不仅仅是文件!因为你是完全正确的,所以必须读取文件来处理它会很糟糕!想象一下,如果您必须读取每个文件以找出它在目录中的位置,则必须搜索文件系统。

有多种方法可以访问与您的文件关联的元数据,具体取决于您使用的确切系统。例如,在 unix 风格的机器中,使用该命令ls -l将为您获取最后编辑的信息。

也就是说,出于这个确切原因,日志文件的名称通常以时间戳开头。但是,如果您想保持文件名美观,则可能是通过最后编辑的日期。

于 2013-07-01T19:23:24.563 回答
1

一个好的 zip 库(例如SharpZipLib)应该允许您迭代存档中包含的文件而不提取它们。这将允许您查询关联的文件日期。例如,使用前面提到的 SharpZipLib,您只需要检查ZipEntry存档中包含的对象的 DateTime 属性。

于 2013-07-01T19:28:03.860 回答