Считать файлы в каталогах И подкаталогах? iPhone - PullRequest
1 голос
/ 15 мая 2010

Я пытаюсь сосчитать все файлы в каталоге, включая подкаталоги. Вот что мне нужно для подсчета файлов в первой папке:

-(NSString *)numberOfPhotos
{
    NSString *MyPath = @"/rootdirectory/"; 
    NSArray *directoryContent = [[NSFileManager defaultManager] directoryContentsAtPath:MyPath]; 

    return [NSString stringWithFormat:@"%d", [directoryContent count]];
}

Я думал, что-то вроде

for (file in folder){
    [file count]
{

но, похоже, не работает.

UPDATE: На самом деле, было очень легко:

NSDirectoryEnumerator *subs = [[NSFileManager defaultManager] subpathsOfDirectoryAtPath:musicPath error:nil];

Ответы [ 3 ]

5 голосов
/ 20 мая 2010
NSDirectoryEnumerator *subs = [[NSFileManager defaultManager] subpathsOfDirectoryAtPath:musicPath error:nil];
3 голосов
/ 15 мая 2010

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

Не могу опубликовать код прямо сейчас, но вы так и сделаете.

1 голос
/ 15 мая 2010

Посмотрите, смогу ли я написать код с клавиатуры iPad ... Использование псевдокода для описания рекурсивного алгоритма:

int fileCount(directory)
{
    int count = 0;
    for (file in directory)
    {
        if (isDirectory(file))
            count += fileCount(file);
        else
            count++;
    }
    return count;
}                
...