2014-01-22 4 views
0

Я пытаюсь прочитать каталог в папке моего ресурса моего приложения для iPhone.Прочтите структуру каталогов в iOS

NSString *path= [[NSBundle mainBundle] pathForResource:@"Capitalization" ofType:@"html" inDirectory:@"MyDirectory"]; 
NSLog(@"Path : %@",path); 
BOOL fileExists = [[NSFileManager defaultManager] fileExistsAtPath:path]; 
if(fileExists){ 
    NSString* content = [NSString stringWithContentsOfFile:path 
                     encoding:NSUTF8StringEncoding 
                      error:NULL]; 
    NSLog(@"Data from plist %@",content); 
}else { 
    NSLog(@"File Not Found"); 
    //exit(1); // if file not found exit the application. 
} 

Но каждый раз, когда я получаю NULL. прошу помочь. Мой каталог также может содержать другой каталог, и в этом случае мне также нужно получить имя каталога.

+0

Вы потрудились посмотреть документы для NSFileManager? –

+0

Вы получаете 'NULL' от чего? Существует ли файл? Является ли 'NULL' от регистрации' content'? Если это так, используйте параметр 'error'. Для этого он и есть. Чтобы рассказать вам, почему метод не удалось. Или это 'путь'' nil'? – rmaddy

+0

BTW - В разделе ресурсов вашей структуры проекта находится ли папка MyDirectory синяя или желтая? – rmaddy

ответ

0

Вы будете хотеть использовать:

NSArray *fileList = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:somePathString error:nil]; 

Это даст вам список папок и файлов внутри выбранного каталога. Если вы хотите, чтобы это выполнялось для поиска вложенных папок, вам нужно будет сделать функцию, которая запускает этот код, и вызывать эту функцию рекурсивно.

В своем коде вы звоните:

NSString *path= [[NSBundle mainBundle] pathForResource:@"Capitalization" ofType:@"html" inDirectory:@"MyDirectory"]; 

что ищет что-нибудь под названием Capitalization.html в папке (BundlePath)/MyDirectory/ и подпапки внутри этого. Убедитесь, что вы используете это правильно, и это фактический путь, который вы пытаетесь выполнить. Если ваш Capitalization.html добавлен как ресурс в комплекте, он никогда не будет найден, потому что все в пакете находится на одном уровне (все существует внутри папки «bundle»). Если ваш Capitalization.html находится в папке с именем MyDirectory, которая была добавлена ​​ссылкой на проект, то вы ищете правильно, и она должна работать.

Short рассказ короткий. Файлы, добавленные как ресурсы, всегда будут найдены в каталоге пакетов. Файлы (и папки), добавленные в качестве ссылки, будут поддерживать структуру их папок, и вы сможете правильно искать папки.

Смежные вопросы