2012-03-12 4 views
5

Мне нужно получить все файлы в каталоге, включая все подкаталоги и все файлы в каждом подкаталоге. в объективном C, я пытаюсь использовать этот метод [[NSFileManager defaultManager] contentsOfDirectoryAtPath:filePath error:nil]Как получить все файлы в каталоге в ipad с помощью объектива c

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

спасибо

ответ

8
- (void)scanPath:(NSString *) sPath { 

    BOOL isDir; 

    [[NSFileManager defaultManager] fileExistsAtPath:sPath isDirectory:&isDir]; 

    if(isDir) 
    { 
     NSArray *contentOfDirectory=[[NSFileManager defaultManager] contentsOfDirectoryAtPath:sPath error:NULL]; 

     int contentcount = [contentOfDirectory count]; 
     int i; 
     for(i=0;i<contentcount;i++) 
     { 
      NSString *fileName = [contentOfDirectory objectAtIndex:i]; 
      NSString *path = [sPath stringByAppendingFormat:@"%@%@",@"/",fileName]; 


      if([[NSFileManager defaultManager] isDeletableFileAtPath:path]) 
      { 
       NSLog(path); 
       [self scanPath:path]; 
      } 
     } 

    } 
    else 
    { 
     NSString *msg=[NSString stringWithFormat:@"%@",sPath]; 
     NSLog(msg); 
    } 
} 

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

+0

@Risma это тип рекурсивного решения, о котором я говорил в чате. – GnarlyDog

+0

благодарю вас за ответ :) –

+0

@Risma Пожалуйста, убедитесь, что ваша благодарность вам понравилась :) – Triode

5

Вы хотите использовать enumeratorAtURL: includingPropertiesForKeys: варианты: ошибка: вместо. Он делает глубокое перечисление по умолчанию:

NSURL *myDirectoryURL = [[NSBundle mainBundle] URLForResource:@"Assets" withExtension:@""]; 
NSDirectoryEnumerator *directoryEnumerator = [[NSFileManager defaultManager] enumeratorAtURL:myDirectoryURL includingPropertiesForKeys:[NSArray array] options:0 errorHandler:^BOOL(NSURL *url, NSError *error) { 
    // handle error 
    return NO; 
}]; 

NSString *fileOrDirectory = nil; 
while ((fileOrDirectory = [directoryEnumerator nextObject])) { 
    // use file or directory 
} 

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

https://developer.apple.com/library/mac/#documentation/Cocoa/Reference/Foundation/Classes/NSFileManager_Class/Reference/Reference.html

+0

это может дать мне все файлы в каждом каталоге? –

+0

извините - должен был быть enumeratorAtURL - это работает, проверено –

+0

Это одна ужасная линия назначения. –

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

  • Нет связанных вопросов^_^