Работа с файлами Zip и GZip в Java

Прошло много времени с тех пор, как я выполнял ввод-вывод Java, и я не знаю о последних "правильных" способы работы с файлами Zip и GZip. Мне не обязательно нужна полная рабочая демонстрация - я в первую очередь ищу подходящие интерфейсы и методы для использования. Да, я мог бы найти любой случайный учебник по этому поводу, но производительность - это проблема (эти файлы могут быть довольно большими), и я действительно забочусь о том, чтобы использовать лучший инструмент для работы.

Основной процесс I ' Будет реализовано:

  • Загрузите группу файлов (которые могут быть заархивированы, сжаты с помощью gzip или и того, и другого) во временную папку.
  • Добавить все извлеченные файлы в новый zip-файл во временной папке.

входные файлы могут быть сжаты и заархивированы более одного раза. Например, «полное извлечение» должно принимать любой из следующих входных параметров (я не контролирую их) и оставлять после себя foo.txt :

  • foo.txt.gz
  • foo.txt.zip
  • foo.txt.gz.zip
  • foo.txt.zip.gz
  • ...
  • foo.txt.gz.gz.gz.zip.gz.zip. zip.gz.gz
  • ...

Тогда у меня может остаться foo.txt , bar.mp3 , baz.exe - поэтому я бы просто добавил их все в новый zip-файл с некоторым общим именем.

Вопросы:

  • Поскольку размер файла является потенциальной проблемой,
    • извлечь файлы zip?
    • извлечь файлы gzip?
    • записать файлы zip?
  • Могу ли я сохранить отдельные извлеченные файлы в памяти перед их записью на диск? Или
  • Может ли это быть плохой идеей для потенциально больших файлов?
16
задан Matt Ball 14 September 2010 в 17:18
поделиться