2009-06-04 2 views
1

Существуют ли библиотеки для работы с zip-файлами, как если бы они были просто каталогами? например, получить список файлов, прочитать файл и т. д.«Чтение» zip-файлов, как если бы они были каталогами

Я предпочитаю что-то в C, но любой другой язык в порядке.

Кроме того, это помогло бы, если бы такая библиотека могла иметь дело с другими форматами сжатия (rar, 7z и т. Д.).

ответ

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 
+0

Спасибо! Это круто. Я люблю python = D – hasen

2

Для Java, вы можете рассмотреть TrueZIP, которые, по поводу "работы с почтовыми файлами, как если бы они были просто каталоги":

  • Просмотр архивных файлов с использованием заметок для замены для JFileChooser и FileSystemView.
  • Просмотр и редактирование файловой системы с помощью настраиваемого JTree, в том числе архивного файла до любого уровня вложенности.

Для "других форматов сжатия", документы говорят "TrueZIP поставляется с драйверами для архива ZIP, TAR и все производные (JAR, TAR.GZ, tar.bz2, TZP, ...)." Никакого рара, о котором я знаю.

У этого есть (с открытым исходным кодом) лицензия Apache.

3

Если вы предпочитаете C, зарегистрируйтесь Minizip. Он основан на Zlib. Он может открывать .zip-файлы, перебирать элементы и извлекать файлы. Я не думаю, что он поддерживает другие форматы.

2

Другим вариантом для Java является Apache Commons VFS project.

С сайта:

Commons VFS обеспечивает единый интерфейс для доступа к различным различных файловых систем . Он представляет собой единый вид файлов из разных источников , таких как файлы на локальном диске , на HTTP-сервере или в архиве ZIP-архива .

Некоторые из особенностей Commons VFS являются:

  • Один последовательный API для доступа к файлам различных типов.
  • Поддержка многочисленных типов файловых систем.
  • Кэширование информации о файле. Кэширует информацию в JVM и может кэшировать информацию о удаленных файлах в локальной файловой системе.
  • Доставка событий.
  • Поддержка логических файловых систем, состоящих из файлов различных файловых систем.
  • Утилиты для интеграции Commons VFS в приложения, такие как ClassLoader, поддерживающий VFS, и URLStreamHandlerFactory.
  • Набор задач Ant с поддержкой VFS.
+0

К сожалению, Commons VFS доступен только для чтения с zip-файлами, в соответствии с http://commons.apache.org/vfs/filesystems.html#Zip,%20Jar%20and%20Tar. – Glenn

1

This article описывает делать именно такую ​​вещь - обрабатывать почтовый файл в качестве дополнения к файловой системе. Он находится на C#. Использует DotNetZip.

Смежные вопросы