是否可以将文件保存在NSDocumentDirectory中的自定义文件夹中

时间:2014-11-15 07:51:20

标签: ios objective-c nsurl nsdocumentdirectory


是否可以在NSDocumentDirectory的自定义文件夹中保存文件(任何类型)?我的意思是每当我尝试保存时,我都将其用作资源文件路径:

NSArray *pathComponents = [NSArray arrayWithObjects:[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject], fileName, nil];
outputFileURL = [NSURL fileURLWithPathComponents:pathComponents];

NSString *imageDirectory = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) objectAtIndex:0];

结果它总是保存在以下目录中,
~/Library/Application Support/iPhone Simulator/......./Documents/file.ext

但是可以将该文件保存在自定义文件夹中,如下所示:
~/Library/Application Support/iPhone Simulator/......./Documents/CustomFolder/file.ext

如果是,您能告诉我有关该过程的详细信息吗? 提前谢谢。
祝你有个美好的一天。

其他

在这里,实际上我保存了一个音频语音记录文件。该文件的名称来自当前时间。我想将该语音记录文件保存在自定义文件夹中。

这是我的代码:

- (NSString *) dateString
{
    // return a formatted string for a file name
    NSDateFormatter *formatter = [[NSDateFormatter alloc] init];
    formatter.dateFormat = @"ddMMMYYY_hh:mm:ssa";
    return [[formatter stringFromDate:[NSDate date]] stringByAppendingString:@".m4a"];
}

// Set the audio file
NSArray *pathComponents = [NSArray arrayWithObjects:[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject], fileName, nil];
outputFileURL = [NSURL fileURLWithPathComponents:pathComponents];

outputFileURL我保存录制的录音。

我试着用这个:

// Set the audio file
NSString *customDirectoryPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
customDirectoryPath = [customDirectoryPath stringByAppendingPathComponent:@"MyCustomDirectory"];

NSArray *pathComponents = [NSArray arrayWithObjects:customDirectoryPath, fileName, nil];
    NSLog(@"pathComponents %@", pathComponents);
    outputFileURL = [NSURL fileURLWithPathComponents:pathComponents];
    NSLog(@"outputFileURL %@", outputFileURL);

创建文件夹时没有任何问题,但音频文件未保存在该文件夹中。 感谢。

2 个答案:

答案 0 :(得分:4)

是的,这是可能的。您只需要在文档目录中创建一个文件夹。

- (NSURL *)audioRecordingPath:(NSString *)fileName
{
    NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
    NSString *documentsDirectory = [paths objectAtIndex:0]; // Get documents folder
    NSString *folderPath = [documentsDirectory stringByAppendingPathComponent:@"/Recorded"];
    NSFileManager *fileManager  = [NSFileManager defaultManager];

    NSError *error = nil;
    if (![fileManager fileExistsAtPath:folderPath])
        [fileManager createDirectoryAtPath:folderPath withIntermediateDirectories:NO attributes:nil error:&error]; //Create folder

    NSString *filePath = [folderPath stringByAppendingPathComponent:fileName];

    return [NSURL fileURLWithPath:filePath];
}

然后,每次要存储内容并存储到文件夹中时,都会获取该文件夹。

答案 1 :(得分:2)

是的,你可以在NSDocumentDirectory之后附加目录名,然后可以做类似的事情

 NSString *customDirectoryPath = [NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject];
 customDirectoryPath = [customDirectoryPath stringByAppendingPathComponent:@"MyCustomDirectory"]
 if (![[NSFileManager defaultManager] fileExistsAtPath:customDirectoryPath]) {
        [[NSFileManager defaultManager] createDirectoryAtPath:customDirectoryPath
                                  withIntermediateDirectories:YES
                                                   attributes:nil
                                                        error:&error];