Имеется: zip архив мегабайтов на 60 состоящий из множества мелких файлов.
Требуется: заменить один из файлов в архиве на другой с тем же именем
Вопрос: Есть ли возможность сделать это средствами языка 1с не распаковывая весь архив методом "ИзвлечьВсе()" с модификацией и последующей запаковкой, а точечно отредактировать нужный файл?
Требуется: заменить один из файлов в архиве на другой с тем же именем
Вопрос: Есть ли возможность сделать это средствами языка 1с не распаковывая весь архив методом "ИзвлечьВсе()" с модификацией и последующей запаковкой, а точечно отредактировать нужный файл?
По теме из базы знаний
- Лицензии на программное обеспечение: что, как и для чего
- Как загрузить мобильное приложение 1C 8 для разработчика на устройство под управление iOS без использования xCode и MacOS!
- Сверка таблиц при разработке через тестирование
- Подсистема прав доступа (анализ ролей, отладка RLS, английский код, обычные и управляемые формы)
- Работа с Ворд через СОМ-Объект
Ответы
Подписаться на ответы
Инфостарт бот
Сортировка:
Древо развёрнутое
Свернуть все
(1) Алгоритм сжатия полностью исключает ваши надежды. В начале все складывается в один большой массив байт (файлы записываются последовательно), потом выискивается подходящий размер блока, затем массив нарезается на блоки и подсчитываются повторения блоков, в конце в место блоков вписываются номера, а сами блоки становятся словарем.
Весь архив требуется перестраивать, когда в нем что-то меняется.
Весь архив требуется перестраивать, когда в нем что-то меняется.
(10) Вообще, если делать интерактивно операцию перетаскивания мышкой файла допустим в программе winrar, то в каталоге архива формируется новый временный скрытый файл архива с новым уникальным именем, туда запихиваются файлы извлекаемые налету из нашего архива, но с новым подмененным файлом и после этого старый архив подменяется новым. Полной распаковки 60 Мб архива в 800 Мб на жесткий диск не происходит. Понимаете в чем проблема?
(10) не специалист в области сжатия, но не совсем так.В винрар было (есть?) такое понятие как "непрерывный архив". Там да имел место такой принцип. А в "классическом" так сказать способе сжатия - каждый файл сжимается отдельно.
Преимуществом непрерывного архива была потенциально возможная большая степень сжатия (да именно потому, что все файлы складывались в большой массив, соответственно повторения блоков было больше), недостатком соответственно является то, что при повреждении части архива невозможно извлечь вообще ничего (ни один файл) из этого архива.
Преимуществом непрерывного архива была потенциально возможная большая степень сжатия (да именно потому, что все файлы складывались в большой массив, соответственно повторения блоков было больше), недостатком соответственно является то, что при повреждении части архива невозможно извлечь вообще ничего (ни один файл) из этого архива.
(3)Там используется код:
Но он затирает всё то, что ранее было в архиве. В этом и проблема
Архив = Новый ЗаписьZIPФайла("c:\архив.zip", "", "", МетодСжатияZIP.Сжатие, УровеньСжатияZIP.Максимальный, МетодШифрованияZIP.Zip20);
Архив.Добавить("c:\ZIP\*.xls",
РежимСохраненияПутейZIP.СохранятьОтносительныеПути,
РежимОбработкиПодкаталоговZIP.ОбрабатыватьРекурсивно);
Архив.Записать();
Но он затирает всё то, что ранее было в архиве. В этом и проблема
Для получения уведомлений об ответах подключите телеграм бот:
Инфостарт бот