Прошло некоторое время с тех пор, как я сделал Java I/O, и я не знаю последних "правильных" способов работы с Zip и GZip файлами. Мне не обязательно нужна полная рабочая демонстрация - я в первую очередь ищу подходящие интерфейсы и методы для использования. Да, я мог бы найти какой-либо случайный учебник по этому вопросу, но производительность - это проблема (эти файлы могут быть довольно большими), и мне действительно нужно использовать лучший инструмент для работы.
Основной процесс, который я буду выполнять:
- Загрузите кучу файлов (которые могут быть сжаты в zip, gzipped или оба) в папку temp.
- Добавьте все извлеченные файлы в новый zip файл в папке temp.
Входные файлы могут быть сжаты и архивированы более одного раза. Например, "полное извлечение" должно принимать любой из следующих входов (я не контролирую их) и оставляю 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 файлы?
- Мне лучше сохранить отдельные извлеченные файлы в памяти перед тем, как записать обратно на диск? Или,
- Разве потенциально большие файлы делают эту плохую идею?