![]() |
|
|
![]()
|
|
| Majestio |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 83 Регистрация: 19.12.2010 Репутация: нет Всего: нет |
Не так давно я написал архиватор ZIP на PHP (нужда возникла чисто из за ограничений бесплатного хостинга - по памяти, выделяемой процессу, и по макс. размеру файла на хостинге). Сама реализация получилась так, что и самому понравилась - сделал ее так сказать адаптивной.
Алгоритм следующий: 1) (опционально) Если файл имеет расширение слабо пакуемых или непакуемых файлов, типа - '7z','a00','a01','a02','ace','ain','alz','apz','ar','arc','arh','ari','arj','ark','axx','b64','ba','bh','bhx','boo','bz','bz2','bza','bzip','bzip2','c00','c01','c02', 'cab','car','cb7','cbr','cbz','cp9','cpt','dd','deb','dgc','dist','djvu','dl_','dz','ecs','efw','epi','ex_','f','fdp','gca','gif','gz','gza','gzi','gzip','ha','hbc','hbc2', 'hbe','hki','hki1','hki2','hki3','hpk','hyp','ice','ipg','ipk','ish','ita','j','jar.pac','jgz','jic','jpeg','jpg','kgb','lbr','lemon','lha','lnx','lqr','lz','lzh','lzma','lzo', 'lzx','md','mou','mzp','oar','oz','p7m','pack.gz','package','pae','pak','paq6','paq7','paq8','par','par2','pbi','pcv','pea','pet','pf','pim','pit','piz','pkg','png','pup', 'pup','puz','qda','r0','r00','r01','r02','r03','r1','r2','r21','r30','rar','rev','rk','rnc','rp9','rpm','rte','rzs','s00','s01','s02','sar','sdn','sea','sen','sfs','sfx', 'sh','shar','shr','sit','sitx','spt','sqx','sqz','tar','tar.gz','tar.xz','taz','tbz','tbz2','tg','tgz','tlz','tlzma','tsk','txz','tz','uc2','uha','vem','vsi','wad','war', 'wot','xef','xez','xmcdz','xpi','xx','xz','y','z','z01','z02','z03','z04','z05','z06','z07','z08','z09','zap','zi','zip','zipx','zix','zl','zoo','zpi','zz' выбирается метод STORE 2) Иначе файл сперва жмется методом DEFLATE, потом BZIP2 3) В результирующий архив попадают сжатые данные у которых размер получается меньше 4) Алгоритму можно задавать предельные размеры использования памяти и размеры томов результирующего архива Хочу это переписать под Qt. Плюс этого всего - архивы получаются ощутимо меньше, нежели я использую обычный пакер, т.к. там есть возможность только жестко выбирать метод сжатия. Но есть одно "но" ... Мои ZIP-ы нормально читает только 7z. WinRAR, открывая архивы со смешанными методами сжатия файлов - на файлы сжатые по BZIP2 кричит "неизвестный метод сжатия". Почитав стандарт, я вроде не нашел запрета на BZIP2 в явном виде. Вот и не решаюсь тратить время - если это все же в пределах стандарта, тогда смысл есть. А если всеж нарушение и это новодел - думаю забросить это. Какие мысли есть по этому поводу? Интересно все. |
|||
|
||||
| borisbn |
|
|||
![]() Эксперт ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 4875 Регистрация: 6.2.2010 Где: Ростов-на-Дону Репутация: 48 Всего: 135 |
Если пользуешься ф-циями qCompress и qUncompress, то учти, что они в начало данных вставляют размер (4 байта, кажется)
-------------------- Женщины отличаются от программистов тем, что у них чары состоят из стрингов |
|||
|
||||
| Majestio |
|
|||
![]() Шустрый ![]() Профиль Группа: Участник Сообщений: 83 Регистрация: 19.12.2010 Репутация: нет Всего: нет |
Я в курсе. Вообще есть идея, если сподоблюсь, использовать DEFLATE64, сырцы есть
|
|||
|
||||
![]()
|
| Правила форума "С/С++: Кроссплатформенное программирование, QT/Gtk+/wxWidgets" | |
|
|
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, JackYF, Любитель. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | С/С++: Кроссплатформенное программирование, Qt/Gtk+/wxWidgets | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |