OneScript icon indicating copy to clipboard operation
OneScript copied to clipboard

ZIP. Добавление содержимого каталога с относительными путями

Open EvilBeaver opened this issue 8 years ago • 1 comments

Функциональность добавления в 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, наверное в этом была какая-то цель, и она может сломаться.

EvilBeaver avatar Jul 16 '17 16:07 EvilBeaver

P.S. также надо сравнить с 1С, как поступает она.

EvilBeaver avatar Jul 16 '17 16:07 EvilBeaver