当我尝试使用下面的代码创建一个文件夹时,当我尝试创建一个已存在的文件夹而不是返回YES时,它返回NO并显示错误:
[[NSFileManager defaultManager] createDirectoryAtPath:[documentsPath stringByAppendingPathComponent:@"temp"] withIntermediateDirectories:NO attributes:nil error:&error];
Apple的documentation说:
Return Value
YES if the directory was created or already exists or NO if an error occurred.
所以我应该在成功或者文件夹存在时得到YES。但是当文件夹存在时我收到此消息:
Error Domain=NSCocoaErrorDomain Code=516 "The operation couldn’t be completed. (Cocoa error 516.)" UserInfo=0x200ef5f0 {NSFilePath=/var/mobile/Applications/DA657A0E-785D-49B4-9258-DF9EBAC5D52A/Documents/temp, NSUnderlyingError=0x200ef590 "The operation couldn’t be completed. File exists"}
这是一个错误,应该报告给Apple还是我做错了什么?
答案 0 :(得分:3)
[NSFileManager createDirectoryAtPath:withIntermediateDirectories:attributes:error:]
将失败。
所以前进的方法是不打扰创建目录(如果它已经存在)并抛出异常(如果它存在且不是目录):
NSString *filename = [documentsPath stringByAppendingPathComponent:@"temp"];
NSFileManager *fileman = [NSFileManager defaultManager];
BOOL isDir = NO;
if (![fileman fileExistsAtPath:filename isDirectory:&isDir])
{
// Create the directory
}
else if (!isDir)
{
NSLog(@"Cannot proceed!");
// Throw exception
}
答案 1 :(得分:0)
我认为您需要使用withIntermediateDirectories YES来获取Apple文档中的行为。