在我当前的项目中,我正在处理大量文件(超过数十米和30 kb之间的milliard文件),作为为我的客户复制它们的资源耗时的工作。我正在寻找一种包装机制,可以帮助我将其中一个或10000个包装为一个文件,从而使更高的复制速度打包到一个文件中,因为在这种情况下,我要处理的是较少的文件计数;而且,从我的应用程序中阅读它们不需要任何提取,也不需要在写作或更改它们时也不需要压缩(由于分发的应用程序和性质,并且在客户之间共享资源),我已经搜索过,我已经搜索过知道以下邮政库:
- Sharpziplib
- dotnetzip
- system.io.packaging
,但似乎必须通过文件最少迭代库,以访问zip或包装中的文件,而无需提取。我需要在zip或软件包文件中通过其地址(文件夹结构层次结构)访问文件!以下链接是通过zip文件通过迭代回答的类似问题:
如何阅读data-from-a-a-a-zip-file-without-to-naving-to-unzip-the-the-enter-file
content-inside-zip-file
有人对此问题有任何想法或解决方案吗?
顺便说一句,我在C#中编码,该项目是基于Windows表单的。
我会做自己的软件包格式。使用Gzipstream或其他东西。对于每个文件,您可以使用GzipStream压缩它们,在获得字节值之后,您需要以包含每个文件的包装格式创建标头(名称,启动位置和长度)。将这些数据放在标题中,这可能会在软件包的开头。您可以获取所需文件的信息,并且在寻找压缩数据的位置后,您可以获得带有指定长度的字节数组。
但是,如果修改一个文件,则需要在修改后的文件后重新计算所有索引。