无需解压缩即可访问压缩文件
本文关键字:访问 压缩 文件 解压缩 | 更新日期: 2023-09-27 18:20:32
我的程序在系统运行的每小时都会生成一个信息日志,其中包含各种数据,如访问时间、数据传输和遇到的任何故障/警告。不幸的是,这些日志文件的大小可能在10000KB到25000KB之间,所以我已经开始在它们至少24小时后单独压缩它们,这样我的系统一次只有24个解压缩的日志文件。
我需要解决的问题是,该软件的一部分是"诊断"窗口,用户可以根据文件的创建时间从选定的日期范围加载日志文件,并以易读的格式查看其内容。我知道,为了让文件显示在他们的搜索中,必须有一个例外,允许检查.zip,但我无法访问文件的任何数据,以查看所述.zip文件是否在日期范围内。
我的问题是:他们是我访问压缩文件信息(以及在更大程度上访问其内容)的一种方式吗?而无需解压缩文件、进行搜索、重新压缩文件?如果只有一两个文件在你的日期范围内,那么解压缩一百个或更多的文件似乎工作量太大了。
您应该为每个压缩文件的文件名添加一个时间戳。
通常,当您压缩文件时,您将文件的实际数据放入不可读的格式中。大多数压缩算法(请记住,有很多)都是在一个非常棘手的级别上工作的,这就是为什么你真的需要解压缩文件来获取原始数据。(没有免费午餐这回事。)
幸运的是,文件不仅仅是一个文件!因为你完全是对的,必须阅读一个文件才能用它做事情会很可怕!想象一下,如果你必须读取每个文件来找出它在目录中的位置,那么你就必须搜索一个文件系统。
根据您所在的系统,有多种方法可以访问与文件相关的元数据。例如,在unix风格的机器中,使用命令ls -l
可以获得上次编辑的信息。
也就是说,由于这个原因,日志文件的名称通常以时间戳开头。不过,如果你想保持文件名的美观,那么查看上次编辑的日期可能是最好的方法。
一个好的zip库(例如SharpZipLib)应该允许您在不提取文件的情况下迭代归档中包含的文件。这将允许您查询关联的文件日期。例如,使用前面提到的SharpZipLib,您只需要检查归档中包含的ZipEntry
对象的DateTime属性。