“读取”zip文件就好像它们是目录一样

时间:2009-06-04 03:49:51

标签: zip compression

是否有任何用于处理zip文件的库,就好像它们只是目录一样?即获取文件列表,读取文件等

我更喜欢C中的某些内容,但任何其他语言都可以。

此外,如果这样的库可以处理其他压缩格式(rar,7z等),它会有所帮助。

6 个答案:

答案 0 :(得分:3)

Python standard library拯救(稍微修改自here):

>>> import zipfile
>>> z = zipfile.ZipFile('/path/to/zip/file.zip', 'r')
>>> for filename in z.namelist():
...   print filename
...   bytes = z.read(filename)
...   print len(bytes)
file/1.dat
75776
file/2.dat
38912
file/3.dat
40960

答案 1 :(得分:3)

如果您更喜欢C,请查看Minizip。它基于Zlib。它可以打开.zip文件,迭代项目,并提取文件。我不认为它支持其他格式。

答案 2 :(得分:2)

SharpZipLib,可用于c#。

答案 3 :(得分:2)

对于Java,您可以考虑TrueZIP,关于“将zip文件作为简单目录处理”:

  • 使用JFileChooser和FileSystemView的插件替换浏览存档文件。
  • 使用自定义JTree浏览和编辑文件系统,包括任何嵌套级别的存档文件。

对于“其他压缩格式”,文档说“TrueZIP附带ZIP,TAR和所有衍生产品的存档驱动程序(JAR,TAR.GZ,TAR.BZ2,TZP,...)。”没有我知道的rar。

它有一个(开源)Apache许可证。

答案 4 :(得分:2)

Java的另一个选择是Apache Commons VFS project

来自网站:

  

Commons VFS为其提供单一API   访问各种不同的文件   系统。它呈现出统一的视角   各种不同的文件   来源,例如本地文件   磁盘,HTTP服务器或内部   Zip档案。

     

Commons VFS的一些功能   是:

     
      
  • 用于访问不同类型文件的单一一致API。
  •   
  • 支持多种文件系统类型。
  •   
  • 缓存文件信息。在-JVM中缓存信息,并可选择在本地文件系统上缓存远程文件信息。
  •   
  • 活动传递。
  •   
  • 支持由来自各种不同文件系统的文件组成的逻辑文件系统。
  •   
  • 用于将Commons VFS集成到应用程序中的实用程序,例如支持VFS的ClassLoader和URLStreamHandlerFactory。
  •   
  • 一组启用了VFS的Ant任务。
  •   

答案 5 :(得分:1)

This article描述了这样做 - 将zip文件视为文件系统的扩展。它在C#中。使用DotNetZip