В моем коде для создания zip-архива файлов DOCX перед переименованием .zip в .docx я использую этот первый метод с использованием набора инструментов SSZipArchive:
[SSZipArchive createZipFileAtPath:zipPath withContentsOfDirectory:dirPath keepParentDirectory:YES withPassword:nil];
В большинстве случаевОкончательный документ должен быть исправлен Word (что успешно).В некоторых редких случаях документ открывается нормально, а в некоторых других случаях восстановление невозможно.Я проверил весь код XML в разных ресурсах, и они строго идентичны.И все права доступа к файлам одинаковы ...
Затем, посмотрев множество онлайн-ресурсов, я прочитал, что хороший способ архивирования файла DOCX с помощью SSZipArchive немного отличается:
NSArray *paths = [[NSFileManager defaultManager] subpathsAtPath:dirPath];
NSMutableArray *fullPaths = [[NSMutableArray alloc] init];
for (int i = 0; i < paths.count; i++) {
if ([[[paths objectAtIndex:i] lastPathComponent] hasPrefix:@".DS"])
continue;
[fullPaths addObject:[dirPath stringByAppendingPathComponent:[paths objectAtIndex:i]]];
}
[SSZipArchive createZipFileAtPath:zipPath withFilesAtPaths:fullPaths];
Нов этом случае результирующая файловая иерархия является беспорядком: файлы не сохраняются в соответствующих каталогах!
Чтобы понять, что происходит с первым методом, у меня был интересный опыт: если я просто разархивируюDOCX-файл, используя StuffIt Expander, а затем снова заархивируйте его (с помощью StuffIt или приложения MacOS zip), не меняя ничего в пакете, полученный документ DOCX не может быть открыт Word ... он пытается восстановить, но предупреждает, что этоневозможно.Есть ли что-то особенное в архивировании файлов DOCX, которые я пропустил?