создать zip-архив, используя NSTask, содержащий папку первого уровня с файлами - PullRequest
4 голосов
/ 21 марта 2011

Мой метод работает для архивирования файлов из ранее созданного и заполненного временного каталога:

NSURL *destURL = self.archiveDestURL;
NSTask *task = [[NSTask alloc] init];
[task setCurrentDirectoryPath:[srcURL path]]; 
[task setLaunchPath:@"/usr/bin/zip"];
NSArray *argsArray = [NSArray arrayWithObjects:@"-r", @"-q", [destURL path], @".", @"-i", @"*", nil];
[task setArguments:argsArray];
[task launch];
[task waitUntilExit];

, но то, что я хотел бы иметь при разархивировании, - это папка с файлами.конечно, я могу создать папку в tempDir и записать туда свои файлы, но каков zip-аргумент для того, чтобы папка была верхним уровнем в созданном архиве?

я не видел этого в man zip.

Ответы [ 2 ]

3 голосов
/ 01 апреля 2013

Это вам поможет.

NSTask *unzip = [[NSTask alloc] init];
[unzip setLaunchPath:@"/usr/bin/unzip"];
[unzip setArguments:[NSArray arrayWithObjects:@"-u", @"-d", 
                     destination, zipFile, nil]];

NSPipe *aPipe = [[NSPipe alloc] init];
[unzip setStandardOutput:aPipe];

[unzip launch];
[unzip waitUntilExit];
0 голосов
/ 21 марта 2011

вместо использования NSTask, вы можете включить функцию сжатия в ваш код.Есть несколько вариантов.

  1. ZipBrowser от apple.com
  2. добавление категории к NSData, как в здесь
  3. аналогичный вопрос. Как создать ZIP-файл с помощью Objective C?
...