![]() |
просмотр файла в архиве без распаковки архива
Здравствуйте!
На большом архиве 7z заметил, что для просмотра файла в нём (winrar, 7zip), начинается распаковка других файлов в этом архиве (пока не знаю всех тонкостей процесса распаковки, но похоже, что распаковываются не все файлы архива). Это достаточно неудобно, так как для просмотра одного маленького файла в большом архиве приходится долго ждать (можно, конечно, вынести файл из архива, а потом открыть, но интересует именно открытие файла из самого архива). Есть ли способ сделать так, чтобы при просмотра файла в архиве, распаковки других файлов не происходило, то есть распаковывался только один этот файл? Спасибо! |
Цитата:
Цитата:
|
Цитата:
|
jah, чем смотрите? В тотал командоре не пробЫвали?
|
SergAS70, без разницы чем смотреть, если это solid-архив.
|
Цитата:
Цитата:
почти, так как остался такой момент: как бы точно сориентироваться какой из форматов архива - непрерывный? так скажем, "сочной" информации не встретилось из того, что встретилось http://www.7-zip.org/7z.html Цитата:
http://7-zip.org.ua/ru/7z.html Цитата:
возможно не точно: zip, как я понял не непрерывный rar может быть как непрерывным, так и не непрерывным (сориентировался по тому, что в winrar можно ставить/не ставить галочку Create solid archive (Создать непрерывный архив)) в целом, на данный момент, я так понимаю, нужно досконально изучить метод сжатия, после чего возможно удастся сделать вывод о том, непрерывный архив получится в итоге или нет |
Цитата:
Он получается когда все упаковываемые файлы рассматриваются не раздельно, а как непрерывная цепочка байт, т.е. при упаковке последующих файлов активно используется уже упакованная информация. И, в общих чертах, если в обычном архиве для упаковки двух одинаковых файлов потребуется двойное место, то при упаковке их в solid-архив второй файл упаковываться не будет, а в архив будет вставлена ссылка типа "То же самое, что с байта такого-то по байт такой-то в уже имеющейся части". Соответственно если архив попорчен, то из непрерывного архива можно извлечь информацию только до места сбоя, в то время как в обычном архиве можно было бы извлечь абсолютно всё кроме того файла, на который пришёлся сбой. |
Цитата:
Если, исходя из вышеизложенного, я теперь правильно сделал вывод, то - для не непрерывных архивов применяется алгоритм сжатия для каждого файла, после чего эти сжатые файлы объединяются в архив - для непрерывных архивов все файлы выстраиваются в последовательность байт, к которой уже применяется алгоритм сжатия Также сделал вывод, что непрерывность архива определяется исключительно ПО, которое делает архивацию, то есть потенциально любой алгоритм сжатия можно использовать как для получения непрерывных, так и не непрерывных архивов, и существующее ПО типа winrar и 7zip определяет как это делать на своё усмотрение: например, winrar архивы rar и rar5 позволяет сделать как непрерывными, так и не непрерывными, zip - только не непрерывными 7zip не совсем понятно как делает, но похоже, что zip делает не непрерывным, 7z - непрерывным |
Цитата:
Цитата:
|
Цитата:
Метод (solid или нет), если архиватор позволяет и то и то, выбираете вы сами. Цитата:
Цитата:
Цитата:
Сжал exe-файл размером 225 877 байт в архив .7z, а затем его же вместе с его копией, дав ей другое имя. Результат: 158 462 байта и 159 674 байта соответственно. Разница 1212 байт, менее 1% от сжатого первого файла. Вывод: архив непрерывный (а часть разницы ушла на хранение чисто второго имени). PS Уточнение по 7z в следующей реплике, "по вновь открывшимся обстоятельствам". Цитата:
|
Цитата:
Цитата:
|
|
Iska, mwz, спасибо за ценную информацию
Цитата:
Цитата:
сам бы наверное никогда не догадался, но после всего вышеописанного интуитивно наверное можно было бы дойти до того, чтобы искать непрерывность в 7zip среди размеров блока хотя не совсем понятно почему в англоязычном варианте пункт обозначен как non-solid (если слово solid - сплошной, цельный, непрерывный, ..., то non-solid вроде бы как его противоположность) |
Цитата:
|
Цитата:
проверка по методу mwz это подтвердила кстати непрерывности также можно добиться выставив размер блока больше, чем суммарный размер файлов, что вполне логично |
Цитата:
Остальные пункты в выпавшем списке -- это максимальный размер уже упакованного блока, в пределах которого при создании непрерывного архива ищется соответствие между упаковываемым файлом и уже упакованными. И если одинаковые файлы отстоят друг от друга (в порядке следования при упаковке) на бОльшее расстояние, то второй файл будет упаковываться вновь, без оглядки на историю. Чем больше выбранный размер -- тем плотнее получаемый архив, но тем большее время затрачивается на его создание из-за необходимости хранить и проверять текущую историю упаковки. "Одинаковый файл" -- это частный, наиболее удобный для понимания случай. В реалии же многие файлы содержат абсолютно одинаковые, иногда достаточно длинные последовательности байт, на которые это тоже распространяется. Ну и ещё дополнение. Когда появился первый RAR с возможностью создания непрерывных архивов, то я обратил внимание, что при упаковке групп файлов он предварительно сортирует упаковываемые файлы по типам. При этом повышается вероятность того, что файлы с одинаковыми кусками кодов окажутся ближе друг к другу и расчётные работы при создании непрерывного архива уменьшатся, а плотность увеличится. Цитата:
|
Ещё раз всем спасибо, добротная тема получилась
|
Время: 05:25. |
Время: 05:25.
© OSzone.net 2001-