iOS - 在Documents文件夹中创建一个新目录

时间:2015-03-05 18:18:26

标签: ios objective-c nsfilemanager

我不确定我在这里做错了什么。我想要的是创建一个名为Audio的新目录(如果还没有),然后将该文件保存到Audio目录中。当前输出是未创建目录,文件将保存到Documents目录。以下是我使用的代码:

AppDelegate *appDelegate = (AppDelegate *)[[UIApplication sharedApplication] delegate];
NSString *audioDirPath = [NSString stringWithFormat:@"%@Audio", [appDelegate applicationDocumentsDirectory].absoluteString];

NSFileManager *fileManager = [NSFileManager defaultManager];
if (![fileManager fileExistsAtPath:audioDirPath]) {
    [fileManager createDirectoryAtPath:audioDirPath withIntermediateDirectories:NO attributes:nil error:nil];
}
NSURL *audioDirURL = [NSURL URLWithString:audioDirPath];
NSURL *path = [NSURL URLWithString:@"test.mp3" relativeToURL:audioDirURL];
[self.documentData writeToURL:path atomically:YES];

思想?

1 个答案:

答案 0 :(得分:4)

问题是您没有正确形成路径。无论如何,最好在任何地方使用URL。执行此操作时,使用URLByAppendingPathComponent:“向下钻取”某个级别。因此:

NSFileManager* fm = [NSFileManager new];
NSError* err = nil;
NSURL* docsurl =
    [fm URLForDirectory:NSDocumentDirectory
               inDomain:NSUserDomainMask appropriateForURL:nil
                 create:YES error:&err];
// error checking omitted
NSURL* myfolder = [docsurl URLByAppendingPathComponent:@"Audio"];
BOOL ok =
    [fm createDirectoryAtURL:myfolder
        withIntermediateDirectories:YES attributes:nil error:&err];
// error-checking omitted

现在myfolder是您要写入的文件夹的网址。再次,使用URLByAppendingPathComponent派生您要写入的文件的URL。