NSFileManager不创建文件夹

问题描述 投票:2回答:2
- (NSURL *) applicationDocumentsDirectory
{
    return [[[NSFileManager defaultManager] URLsForDirectory:NSDocumentDirectory inDomains:NSUserDomainMask] lastObject];
}

....

NSURL *folder = [[[Database sharedInstance] applicationDocumentsDirectory] URLByAppendingPathComponent:@"temp"];
BOOL isFolder;
NSLog(@"URL: %@", folder);
if ([[NSFileManager defaultManager] fileExistsAtPath:folder.absoluteString isDirectory:&isFolder] == NO)
{
    NSLog(@"IsFolder: %d", isFolder);
    [[NSFileManager defaultManager] createDirectoryAtURL:folder withIntermediateDirectories:YES attributes:nil error:&error];
    if (error)
        NSLog(@"Error: %@", error.localizedDescription);
}

我运行这部分代码两次。

我期望文件夹会被创建,但每次我都收到一个日志,"IsFolder: IsFolder:"。"IsFolder: 7".

为什么第一次运行后没有创建文件夹?

ios objective-c xcode nsfilemanager
2个回答
8
投票

请将folder.absoluteString替换为folder,你的问题就解决了。

请按照以下步骤操作。

1)获取文件夹

  NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentsDirectory, NSUserDomainMask, YES);
 NSString *documentsDirectory = [paths objectAtIndex:0]; 

2)获取文档文件夹和文件夹名

NSString *dataPath = [documentsDirectory stringByAppendingPathComponent:@"MyFolder"];

3) 检查警报是否存在

if (![[NSFileManager defaultManager] fileExistsAtPath:dataPath]){

    NSError* error;
    if(  [[NSFileManager defaultManager] createDirectoryAtPath:dataPath withIntermediateDirectories:NO attributes:nil error:&error])

        else
        {
            NSLog(@"[%@] ERROR: attempting to write create MyFolder directory", [self class]);
            NSAssert( FALSE, @"Failed to create directory maybe out of disk space?");
        }

10
投票

问题在于 folder.absoluteString.

应该是 folder.path 而不是。

© www.soinside.com 2019 - 2024. All rights reserved.