Sieme, чтобы читать CentralDirectory в конце мне сначала нужно узнать, где она находится. Что я не могу сделать, не пропуская файлы один за другим, потому что ее offset пишется уже после самой CD. Если бы я сразу читал его, тогда бы мне пришлось дважды открывать соединение, а это увеличило бы количество запросов, что тоже не всем нравится. Когда данные о размере файлов пишутся перед файлами, как и должны в нормале, открывает все очень шустро, и дополнительные запросы ни к чему.
И вообще, вот тебе правильно r_kant говорит: прога еще не доделана до конца. Не открывает? Сделаем так, что будет. Экран у меня был, я его просто убрал из-за того, что он вообще почти был не виден, но благодаря тому, что в некоторых архивах есть дескрипторы, оказалось, что не везде так быстро читается. Ну верну, какие проблемы-то. И вообще, что тебе так дался этот MiniCommander? У него свои задачи, а у меня тут архиватор.
Вот с логами там хуже: очевидно, что распаковка не доводится до конца, но при этом не выдается никакой ошибки, просто поток перестает выполнятся и все. Я вот думаю, уж не натворил ли там чего обфускатор. Какие-то чудеса, и чудеса нехорошие. Причем происходит эта пакость, когда не весь файл за раз пишешь. Конечно, я мог бы сделать, как все, и не мучиться, но мне все же хочется разобраться.
Malcolm, только что создал полуторамегабайтный архив твоей прогой из файлов по 100-500кб.. Создал за секунд 15-20.. Так же быстро его распаковал обратно без всяких ошибок.
Кстати, смотрел я MiniCommander, там автор просто взял и засунул JZlib без особых хитростей. А эта библиотека просто подчистую взята с С++, работать с потоками не умеет и опериует массивами байтов. Я-то переписывал известные алгоритмы, чтобы они работали с потоками, чтобы можно было экономить heap, не храня целый объем данных в памяти. И вот как раз запись по частям в файл и не работает на старых телефонах, heap которых я берег. Ирония судьбы, блин.
у меня есть прога эмулятор денди на яве. И есть игра duck tales она в орхиве зип. Эмулятор не четает эту игру. Я её разархивировал теперь четает. Я заархивировал сначало JZIPMAN стало читать в этом зипе. Потом заархивировал POWERGRASP ом и эмулятор не четает.
6 янв 2008 в 08:05