«Чтение» почтовых файлов, как если бы они были каталогами - PullRequest
1 голос
/ 04 июня 2009

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

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

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

Ответы [ 6 ]

3 голосов
/ 04 июня 2009

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

3 голосов
/ 04 июня 2009

Python стандартная библиотека на помощь (слегка изменено с здесь ):

>>> 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
2 голосов
/ 04 июня 2009

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

С сайта:

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

Некоторые функции Commons VFS являются:

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

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

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

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

Имеет лицензию Apache (с открытым исходным кодом).

2 голосов
/ 04 июня 2009

Существует SharpZipLib , доступно для c #.

1 голос
/ 04 июня 2009

В этой статье описывается выполнение именно такой вещи - обработка zip-файла как расширения файловой системы. Это в C #. Использует DotNetZip .

...