OneScript
OneScript copied to clipboard
ZIP. Добавление содержимого каталога с относительными путями
Функциональность добавления в ZIP файлов внутри каталога по маске с отн. путями
ЦелевойАрхив = "C:\output\myarchive.zip";
Каталог = "C:\sources\build\*";
ЗаписьАрхива = Новый ЗаписьZipФайла(ЦелевойАрхив);
ЗаписьАрхива.Добавить(Каталог, РежимСохраненияПутейZIP.СохранятьОтносительныеПути, РежимОбработкиПодкаталоговZIP.ОбрабатыватьРекурсивно);
ЗаписьАрхива.Записать();
Если указан каталог с маской, то относительный путь для файлов, лежащих в корне этого каталога вычисляется неверно.
Если каталог с именем dir содержит файл getme.txt, а также любое количество подкаталогов, то приведенный код создаст архив с корректным деревом подкаталогов, но корневое содержимое dir попадет в подкаталог dir.
Исходное:
- getme.os
- somedir1/somedir2/file.txt
- somedir3/somedir4/file.txt
Распакованное:
- dir/getme.os
- somedir1/somedir2/file.txt
- somedir3/somedir4/file.txt
Осторожно
Код правился в коммите 906e90c7, наверное в этом была какая-то цель, и она может сломаться.
P.S. также надо сравнить с 1С, как поступает она.