Зачем отключать открытие с конца?Дело в том, что при первом методе входящий поток открывается только один раз и последовательно читается. При втором нужно сначала пропустить почти весь объем файла до параметра о положении CD, а потом открыть заново и пропустить еще раз, до CD. Обычно это быстрее, чем чтение, но на некоторых старых телефонах пропуск байт работает некорректно, и приходится вместо пропуска просто читать байты в никуда. Это все равно быстрее, чем распаковывать файлы на ходу, но так приходится делать два раза. Поэтому получается, что на таких телефонах при открытии с конца будут дольше открываться архивы без данных о размере файлов в заголовках и битые архивы. Если запретить открытие сзади, то битые архивы, которые котрывались раньше, скорее всего, перестанут открываться, но открытие архивов без данных о размере файлов будет проходить несколько быстрее.
Ссылка на пост
ts 2 мая 2009 в 20:03
ZIP-архив состоит из двух основных частей: собственно файлов с заголовками и записи о содержимом архива в конце, которая называется central directory, сокращенно - CD. Чтобы узнать, что в архиве, нужно добраться до CD, и это можно делать с конца или с начала.
Если с начала, то нужно читать заголовки и пропускать указанные там размеры файлов. Правда, иногда размеры пишут после самих файлов в так называемых дескрипторах, и тогда приходится распаковывать файлы в никуда, чтобы выяснить, сколько байт из архива нужно пропустить.
Если с конца, то читается параметр в самом конце архива, после CD, в котором сказано, с какого байта CD начинается, и потом пропустить уже известное количество байт до CD. Второй метод открытия был введен с 2.5.0 и используется, если размеры файлов в заголовках не написаны или возникает какая-то ошибка в кривом архиве.