83 votes

Obtenir une liste de fichiers dans le dossier Ressources - iOS

Disons que j'ai un dossier dans le dossier "Ressources" de mon application iPhone appelé "Documents".

Existe-t-il un moyen d'obtenir un tableau ou une liste de tous les fichiers inclus dans ce dossier au moment de l'exécution ?

Donc, en code, cela ressemblerait à :

NSMutableArray *myFiles = [...get a list of files in Resources/Documents...];

Est-ce possible ?

135voto

Deepak Danduprolu Points 33605

Vous pouvez obtenir le chemin d'accès au Resources un répertoire comme celui-ci,

NSString * resourcePath = [[NSBundle mainBundle] resourcePath];

Ensuite, ajoutez le Documents au chemin,

NSString * documentsPath = [resourcePath stringByAppendingPathComponent:@"Documents"];

Ensuite, vous pouvez utiliser n'importe quelle API de liste de répertoires de NSFileManager .

NSError * error;
NSArray * directoryContents = [[NSFileManager defaultManager] contentsOfDirectoryAtPath:documentsPath error:&error];

Note : Lorsque vous ajoutez le dossier source dans le bundle, assurez-vous de sélectionner l'option "Créer des références de dossier pour tous les dossiers ajoutés lors de la copie".

35voto

Suragch Points 197

Swift

Mise à jour pour Swift 3

let docsPath = Bundle.main.resourcePath! + "/Resources"
let fileManager = FileManager.default

do {
    let docsArray = try fileManager.contentsOfDirectory(atPath: docsPath)
} catch {
    print(error)
}

Pour en savoir plus :

18voto

Winston Points 2205

Vous pouvez également essayer ce code :

NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *documentsDirectory = [paths objectAtIndex:0];
NSError * error;
NSArray * directoryContents =  [[NSFileManager defaultManager]
                      contentsOfDirectoryAtPath:documentsDirectory error:&error];

NSLog(@"directoryContents ====== %@",directoryContents);

11voto

Matt Frear Points 6287

Version Swift :

    if let files = try? FileManager.default.contentsOfDirectory(atPath: Bundle.main.bundlePath ){
        for file in files {
            print(file)
        }
    }

6voto

Govind P N Points 1016

Liste de tous les fichiers d'un répertoire

     NSFileManager *fileManager = [NSFileManager defaultManager];
     NSURL *bundleURL = [[NSBundle mainBundle] bundleURL];
     NSArray *contents = [fileManager contentsOfDirectoryAtURL:bundleURL
                           includingPropertiesForKeys:@[]
                                              options:NSDirectoryEnumerationSkipsHiddenFiles
                                                error:nil];

     NSPredicate *predicate = [NSPredicate predicateWithFormat:@"pathExtension ENDSWITH '.png'"];
     for (NSString *path in [contents filteredArrayUsingPredicate:predicate]) {
        // Enumerate each .png file in directory
     }

Enumération récursive des fichiers dans un répertoire

      NSFileManager *fileManager = [NSFileManager defaultManager];
      NSURL *bundleURL = [[NSBundle mainBundle] bundleURL];
      NSDirectoryEnumerator *enumerator = [fileManager enumeratorAtURL:bundleURL
                                   includingPropertiesForKeys:@[NSURLNameKey, NSURLIsDirectoryKey]
                                                     options:NSDirectoryEnumerationSkipsHiddenFiles
                                                errorHandler:^BOOL(NSURL *url, NSError *error)
      {
         NSLog(@"[Error] %@ (%@)", error, url);
      }];

      NSMutableArray *mutableFileURLs = [NSMutableArray array];
      for (NSURL *fileURL in enumerator) {
      NSString *filename;
      [fileURL getResourceValue:&filename forKey:NSURLNameKey error:nil];

      NSNumber *isDirectory;
      [fileURL getResourceValue:&isDirectory forKey:NSURLIsDirectoryKey error:nil];

       // Skip directories with '_' prefix, for example
      if ([filename hasPrefix:@"_"] && [isDirectory boolValue]) {
         [enumerator skipDescendants];
         continue;
       }

      if (![isDirectory boolValue]) {
          [mutableFileURLs addObject:fileURL];
       }
     }

Pour en savoir plus sur NSFileManager, voir ici

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X