我正在使用objective-zip将音频文件压缩成zip文件但是当我认为这个异常出现在我身上时:
Terminating app due to uncaught exception 'ZipException', reason:
'Error in opening '/Users/macuser/Library/Application
Support/iPhoneSimulator/5.1/Applications/79E57C84-3B47-437C-BB44-
89BAAB034DF5/Documents/ADDRecordFileForTest_0_07-05-2012 12:42:45.caf' in zipfile
我也尝试先将所有音频文件放入一个目录,然后使用objective-zip压缩这些目录,但下面的例外情况也是如此:
Terminating app due to uncaught exception 'ZipException', reason:
'Can't open '/Users/macuser/Library/Application Support/iPhone Simulator/5.1/
Applications/79E57C84-3B47-437C-BB44-89BAAB034DF5/Documents/
CurrentMeeting_AudioFiles
是Objective-zip仅支持文本文件,为什么objective-zip不压缩现有文件夹?欢迎任何帮助,谢谢。
答案 0 :(得分:0)
文件名中的冒号可能会导致问题。
ADDRecordFileForTest_0_07-05-2012 12:42:45.caf
考虑使用破折号。我也不会使用空格。至少只要您不必处理用户创建的文件名(为了方便/用户体验)。
更多的zip通常不会保留目录。但是,如果您在文件夹中压缩文件,则该目录是路径的一部分。我没有使用Objective-Zip,但是 - 会尝试,因为ZipArchive目前不适合我,因为我需要它。我为ZipArchive写了一个“zip -r”类,基本上是这样的:
- (NSDictionary *)directoriesAndFilesAtPath:(NSString *)path error:(NSError * __autoreleasing *)error {
NSFileManager *fileManager = [[NSFileManager alloc] init];
NSError *fileManagerError = nil;
NSArray *directoryContents = [fileManager contentsOfDirectoryAtPath:path error:&fileManagerError];
if (!directoryContents) {
*error = fileManagerError;
return nil;
}
BOOL isDir;
NSMutableArray *dirs = [NSMutableArray arrayWithCapacity:10];
NSMutableArray *files = [NSMutableArray arrayWithCapacity:10];
for (NSString *object in directoryContents) {
if ([fileManager fileExistsAtPath:[path stringByAppendingPathComponent:object] isDirectory:&isDir]) {
if (isDir) {
[dirs addObject:[path stringByAppendingPathComponent:object]];
} else {
[files addObject:[path stringByAppendingPathComponent:object]];
}
}
}
return @{kDirectoriesKey: dirs, kFilesKey: files};
}
然后,您可以使用递归方法将文件添加到zip并为每个目录调用自身。