В настоящее время я пытаюсь создать менеджер загрузок (DLManager), который позволяет отправлять ссылки на онлайн-файлы, и он отслеживает ход всех загрузок.Я отлично работаю с обычными файлами, но я хотел добавить возможность загружать и распаковывать zip-файлы.Я получил его для работы с двумя основными шагами: инициализация, а затем загрузка.Процесс инициализации устанавливает zipInputStream и собирает информацию о файле для архива, используя FileEntry.getName и .getSize.Используя эту информацию, я могу рассчитать общий размер загрузки очереди и любой предыдущий прогресс для возобновленных загрузок.Когда очередь DLManager устанавливает связь, она начинает этап загрузки, устанавливая другой zipInputStream и используя метод .read для вывода файлов на диск.
Проблема, с которой я сталкиваюсь, заключается в том, что при инициализации файловэто займет много времени.Я могу загрузить более трех больших видеофайлов за время, необходимое для инициализации одного zip-файла.Я не понимаю, как работает zipInputStream.Это просто потоковая информация заголовка, а затем ожидание команды .read для загрузки остальной части или же загрузка всего архива перед возвратом информации заголовка?Если он загружает все сразу, есть ли способ повторно использовать zipInputStream (вернуться к первой записи)?Я пытался зайти так далеко, чтобы прочитать исходный код для zipInputStream, но потерял.Я был бы благодарен всем, кто может пролить свет на эту проблему.Спасибо.