2014-11-15 7 views
0


Возможно ли сохранить файл (любой тип) внутри пользовательской папки в 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); 

Папка создается с любой проблемой, но звуковой файл не сохранить в этой папке. Спасибо.

+0

Что такое outputFileURL при печати на консоли? Проверьте это и посмотрите, правильный ли путь к файлу – Puran

+0

@Puran 'NSLog' показывал, что есть новая папка. Но в реале он не был создан. Поскольку 'stringByAppendingPathComponent' отсутствовал и' NSString * filePath = [folderPath stringByAppendingPathComponent: fileName]; 'была магической линией, предоставленной мистером Рамсваром. Спасибо, брат. :) – Tulon

ответ

6

Да, это возможно. Вам просто нужно создать папку внутри каталога документа.

- (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]; 
} 

Затем выбирайте папку каждый раз, когда хотите что-то хранить и хранить в ней.

+0

Большое спасибо за комментарий и извините за поздний ответ. Это абсолютно работает. Но то, что я действительно хочу, добавляется только под моей старой частью сообщения. Не могли бы вы взглянуть на него? Спасибо. – Tulon

+0

@Tulon благодарит за то, что впустил меня в известность. Я видел ваш вопрос после того, как вы его отредактировали, и вот мой код, который я использую. Я просто передаю строку этому методу и создает файл внутри моей настраиваемой папки. Пожалуйста, дайте мне знать, если вы по-прежнему сталкиваетесь с какой-либо проблемой или какой-либо помощью. –

+1

Sharp, быстрый и быстрый. Это работает. Спасибо loooooot за ваши усилия брата.Будьте осторожны и оставайтесь здоровыми. :) – Tulon

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]; 
+1

Похоже, Rameswar, и я ответил в то же время, но оба являются правильными ответами! – Puran

+0

О, человек, я не знаю, за кого голосовать! Оба правильные и были представлены одновременно !!! – Acey

+0

@Puran Большое спасибо за ответ. Он на 100% правилен. Если возможно, вы можете взглянуть на мою «дополнительную» часть основного сообщения. Еще раз спасибо. – Tulon