Список ВСЕХ файлов на iPhone - PullRequest
1 голос
/ 18 августа 2011

в Objective C, как я могу получить список ВСЕХ файлов на iPhone?

это вообще возможно или я могу получить файлы только из определенного каталога или известного пути?

Ответы [ 3 ]

7 голосов
/ 18 августа 2011

Не без взлома телефона.Все приложения находятся в «песочнице» и могут видеть только определенные файлы.

1 голос
/ 18 августа 2011

Я не уверен, почему люди говорят, что ваше приложение может видеть только определенные файлы в вашей песочнице.Начиная с iOS 2.x (последний раз, когда я пытался что-то подобное), вы можете использовать NSFileManager для просмотра файлов практически в любом каталоге.Вот небольшой код для получения всех имен всех файлов в определенном каталоге.

- (NSArray *)allFiles:(NSString *)aPath
    NSMutableArray * listing = [NSMutableArray array];
    NSArray * fileNames = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:aPath error:nil];
    if (!fileNames) return listing;
    for (NSString * file in fileNames) {
        NSString * absPath = [aPath stringByAppendingPathComponent:file];
        BOOL isDir = NO;
        if ([[NSFileManager defaultManager] fileExistsAtPath:absPath isDirectory:&isDir]) {
            if (isDir) {
                [listing addObject:absPath];
                [listing addObjectsFromArray:[self allFiles:absPath]];
            } else {
                [listing addObject:absPath];
            }
        }
    }
    return listing;
}

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

1 голос
/ 18 августа 2011

Нет, вы можете просто получить файлы в своей песочнице.И для отображения вашего текущего каталога используйте следующий код:

- (NSString *) returnFilePath {
    NSArray *pathArray =
    NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);

    return [pathArray objectAtIndex:0];
}
...