По-моему, самое время объяснить хапактеристики алгоритма. Ну что ж, объясняю. Алгоритм - DEFLATE, универсальный, лучше всего подходит для сжатия неоднородных данных, например, для текста. Он сжимается где-то в 2-3 раза, максимум - в 4. Высокоизбыточные даные сжимаются медленно, потому что приходится долго искать совпадение (и не факт, что находится). Это, например, архивы и картинки, то есть уже сжатые данные или аналогичные по структуре файлы.
По скорости сжатие и разжатие очень несимметричны: сжатие идет где-то в 10 раз медленнее, чем распаковка, причем распаковка идет тем быстрее, чем сильнее сжатие. Еще мне тут говорили, что иногда архив становится больше, чем оригинальный файл. Такое может быть в любом алогритме, если им сжимают что-то, для чего он плохо подходит. В оригинальном алгоритме был механизм проверки, чтобы результат записывался в несжатом виде, если он получился больше оригинала, но я не стал его делать.
cHeRsAnYa1, я как раз и не стал брать один из существующих механизмов, а сделал свой, которому вообще не важен размер входящего файла, весь файл не грузится в память, а просто идет из потока в поток. Так что сжимать можно файлы любого размера. Но 2 МБ на словарь нужно. Возможно, я сумею уменьшить размер за счет частого вызова сборщика мусора, но не обещаю, что это сильно поможет.
UbeiBobra, скажу, что это вряд ли будет, по крайней мере на платформах до JP-8. Там ведь не просто пароль поставить, нужно еще и шифрование сделать. А встроенных средств до JP-8 для этого нет.
Malcolm, щас вроде работает... Но сжимает/разжимает по моему долго(или ME делает это быстро). Сделай уже удобный интерфейс... Прогресс бар по моему от болды чёта показывает(моментально 100% и я жду после этого секунд 20). эта версия сжала лучше, но МЕ всё равно на пару байт меньше не могу зайти на карту, вылетает OutOffBounds(сдесь уже писали). И зачем после тыканья "распаковать/запаковать" вылазит пустое окно? Нафиг оно не надо. успехов в дальнейших разработках!
Пoчeмykep, ну слава богу, ты меня успокоил. Потому что когда прогресс-бар доходит до конца, значит все уже запаковано, осталось лишь записать в файл. И вот это уж тебе надо озаботиться, почему у тебя запись в файл идет так долго. 20 секунд там делать просто нечего. Интерфейс я и не собираюсь здесь делать другой, зачем? Когда будет прога, которая пакует в Zip, тогда и будет другой интерфейс, а в этом уже нет смысла что-то менять.
И еще я не пойму, чего тебе дались несколько байт? Ну я могу сделать совсем куций заголовок файла, но это, считай, правила этикета программистов: делай удобно не только себе. А так там пишется исходное название файла (что удобно всегда) и комментарий, который удобен лично мне. Что такого случится от двух строчек текста? Браузер нужно тестировать на реальном аппарате, которого у меня нет, а на эмуляторе и телефонах SE все ОК. Зачем пустое окно, я писал в FAQ по проге (в теме MobileTar).
Kaн-3, да я, кажется, знаю, отчего это происходит, попробую убрать вызов обычно неиспользуемого метода при запуске. Вообще, это совершенно нормально его вызывать, но К850 почему-то его не воспринимает. Если, конечно, моя догадка верна.
ts 25 ноя 2007 в 16:50