1

在我当前的项目中,我正在处理大量文件(超过数十亿个文件,容量在 1 到 30 KB 之间)作为资源,为我的客户复制它们是一项耗时的工作。我正在寻找一种打包机制,可以帮助我将其中的每一个 1000 或 10000 个打包到一个文件中,从而提高复制速度,因为在这种情况下,我处理的文件数量要少得多;并且从我的应用程序中读取它们在我编写或更改它们时不需要任何提取和压缩(因为分布式应用程序的性能和性质以及在客户端之间共享资源),我已经搜索并且我了解以下 ZIP 库:

  • SharpZipLib
  • 点网邮编
  • System.IO.打包

但似乎上述库需要 - 至少 - 遍历文件才能访问 zip 或包中的文件而无需提取。我需要通过 zip 或包文件中的地址(文件夹结构层次结构)访问文件!以下链接是通过迭代 zip 文件回答的类似问题:

如何从压缩文件中读取数据而无需解压缩整个文件

压缩文件内的内容

有人对此问题有任何想法或解决方案吗?

顺便说一句,我正在用 C# 编码,该项目是基于 Windows 窗体的。

4

1 回答 1

0

我会做我自己的包格式。使用 GZipStream 或其他东西。对于每个文件,在获得字节值之后,您需要使用 GZipStream 压缩它们,并且您需要在包格式中创建一个包含每个文件(名称、起始位置和长度)的标头。在您的标题中使用此数据,这可能会在您的包的开头。你可以得到你想要的文件的信息,在你找到压缩数据的位置之后,你就得到了具有指定长度的字节数组。

但是如果你修改了一个文件,你需要在修改文件后重新计算所有索引。

于 2012-12-18T17:49:03.077 回答