Как узнать информацию о папках в каталоге документов - PullRequest
0 голосов
/ 03 апреля 2012

Я занимаюсь разработкой приложения. В нем я хочу узнать количество папок в каталоге документов и найти файл XML в каждой папке. Подскажите пожалуйста, как узнать информацию о папках в каталоге документов.

Ответы [ 2 ]

1 голос
/ 03 апреля 2012

Если я правильно вас понял, вы хотите найти все xml-файлы во всех папках в каталоге документов?

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = ([paths count] > 0) ? [paths objectAtIndex:0] : nil;

NSArray *contents = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:documentsDirectory
                                                                        error:nil];
for (NSString *path in contents) {
    BOOL isDir;
    if ([[NSFileManager defaultManager] fileExistsAtPath:path
                                             isDirectory:&isDir]
        && isDir) {
        // directory in documents directory
        NSArray *dirContents = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:path
                                                                                   error:nil];
        for (NSString *dirContentsPath in dirContents) {
            if ([[dirContentsPath pathExtension] isEqualToString:@"xml"]) {
                NSLog(@"xml found: %@", dirContentsPath);
            }
        }
    }
}

Возможно, вы захотите добавить рекурсию для более глубоких каталогов.

1 голос
/ 03 апреля 2012

Чтобы получить список каталогов, используйте следующий код, есть 1 атрибут isDirectory, который дает вам true / false для папки / файла.

NSFileManager *fileManager = [NSFileManager defaultManager];
fileList = [[fileManager directoryContentsAtPath:PATH_TO_SEARCH] retain];
NSMutableArray *arrDirectory = [[NSMutableArray alloc] init];
for(NSString *file in fileList) 
{
    NSString *path = [PATH_TO_SEARCH stringByAppendingPathComponent:file];
    BOOL isItDirectory = NO;
    [fileManager fileExistsAtPath:path isDirectory:(&isItDirectory)];
    if(isItDirectory)
        [arrDirectory addObject:file];
}

ваш массив будет содержать весь список каталогов здесь. Вы можете следовать той же схеме для файлов XML.

Надеюсь, это поможет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...