2013-07-01 126 views
0

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

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

我的问题是:他们是我的一种方式来访问压缩文件的信息(并进一步扩展其内容),而无需解压缩文件,搜索,重新压缩文件?如果只有1或2个文件落在日期范围内,那么解压一百个或更多文件看起来工作量太大。

+0

使用该文件的创建/修改时间... –

+0

它可能有助于了解什么是压缩文件 – Jonesopolis

+1

您可以看到zip头文件(文件名和大小),但用于从特定文件获取数据,你需要解压缩 – 2013-07-01 19:26:01

回答

1

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

通常,当您压缩文件时,您将文件的实际数据转换为不可读的格式。大多数压缩算法(记住有很多)在非常不方便的层面上工作,这就是为什么你真的需要解压缩文件才能获得原始数据。 (没有免费午餐这样的东西。)

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

根据您所使用的确切系统,有多种方式可以访问与您的文件相关的元数据。例如,在使用命令ls -l的unix风格的机器中,您将获得最后编辑的信息。

也就是说,日志文件通常具有以时间戳开头的名称,因为这个确切原因。如果你想保留你的文件名,那么通过最后编辑的日期可能是一条路。

1

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

+0

我会争辩说,如果你没有真正压缩或解压缩任何文件,像SharpZibLib这样的库是严重矫枉过正的。 –

+0

大多数情况下不允许使用非内部库。因为这是一个盈利软件 – DarthSheldon