Получить массив каталогов в каталоге документов - PullRequest
6 голосов
/ 31 января 2010

Я пытаюсь вернуть список каталогов, присутствующих в каталоге документов приложения. Я могу получить массив, содержащий все файлы с заданным расширением (например, файлы .txt или .png) и могу вернуть все содержимое (включая каталоги) Проблема возникает, когда я хочу вернуть только каталоги. Есть ли простой способ сделать это?

Вот мой код для возврата всех .txt файлов:

- (ViewController *) init {
    if (self = [super init]) self.title = @"Text Files";

    // get the list of .txt files
    directoryList = [[[[NSFileManager defaultManager] directoryContentsAtPath:DOCUMENTS_FOLDER] 
                      pathsMatchingExtensions:[NSArray arrayWithObjects:@".txt", nil]] retain];
    NSLog(@"%@", directoryList);

    return self;
}

и для всех файлов

- (ViewController *) init {
    if (self = [super init]) self.title = @"Text Files";

    // get the list of all files and directories
    directoryList = [[[NSFileManager defaultManager] directoryContentsAtPath:DOCUMENTS_FOLDER] retain];

    NSLog(@"%@", directoryList);

    return self;
}

Ответы [ 2 ]

22 голосов
/ 31 января 2010

Попробуйте это:

- (ViewController *) init {
    if (self = [super init]) self.title = @"Text Files";

    // get the list of all files and directories
    NSFileManager *fM = [NSFileManager defaultManager];
    fileList = [[fM directoryContentsAtPath:DOCUMENTS_FOLDER] retain];
    NSMutableArray *directoryList = [[NSMutableArray alloc] init];
    for(NSString *file in fileList) {
        NSString *path = [DOCUMENTS_FOLDER stringByAppendingPathComponent:file];
        BOOL isDir = NO;
        [fM fileExistsAtPath:path isDirectory:(&isDir)];
        if(isDir) {
            [directoryList addObject:file];
        }
    }

    NSLog(@"%@", directoryList);

    return self;
}
2 голосов
/ 01 июня 2015

Мрюг написал все это, кроме одной вещи,

fileList = [[fM directoryContentsAtPath:DOCUMENTS_FOLDER];

Заменить на

fileList = [fileManager contentsOfDirectoryAtPath:filePath error:nil];
...