2012-03-12 13 views

Odpowiedz

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); 
    } 
} 

można nazwać tę funkcję, która będzie rejestrować wszystkie pliki w katalogu, nadzieję, że to pomoże.

+0

@Risma to rodzaj rekursywnego rozwiązania, o którym mówiłem na czacie. – GnarlyDog

+0

dziękuję za odpowiedź :) –

+0

@Risma Upewnij się, że podziękowania należą się właściwej osobie :) – Triode

5

Chcesz użyć enumeratorAtURL: includingPropertiesForKeys: Opcje: błąd: zamiast. Domyślnie jest to głębokie wyliczenie:

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 
} 

Argument options umożliwia określenie głębokiego lub płytkiego wyliczenia.

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

+0

czy może dać mi wszystkie pliki w każdym katalogu? –

+0

Przepraszam - powinienem być enumeratorAtURL - to działa, testowane –

+0

To jedna okropnie wyglądająca linia zadań. –

Powiązane problemy