是否可以在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);
创建文件夹时没有任何问题,但音频文件未保存在该文件夹中。 感谢。
答案 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];