Obtenir une liste de fichiers dans le dossier Ressources-iOS

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

Est-il une manière que je peux obtenir un tableau ou une liste de tous les fichiers inclus dans ce dossier au moment de l'exécution?

donc, en code, ça ressemblerait à:

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

est-ce possible?

77
demandé sur CodeGuy 2011-06-19 01:15:06

7 réponses

vous pouvez obtenir le chemin vers le répertoire Resources comme ceci,

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

puis ajouter le Documents au chemin,

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

alors vous pouvez utiliser n'importe lequel des API de répertoire de NSFileManager .

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

Note : lors de L'ajout du dossier source dans le paquet, assurez-vous de sélectionner "Créer des références de dossiers pour l'option dossiers ajoutés lors de la copie"

127
répondu Deepak Danduprolu 2014-06-13 02:55:58

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

autre lecture:

22
répondu Suragch 2017-05-23 11:47:05

vous pouvez essayer ce code aussi:

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

NSLog(@"directoryContents ====== %@",directoryContents);
18
répondu Winston 2014-02-18 15:20:59

version Swift:

    if let files = try? FileManager.default.contentsOfDirectory(atPath: Bundle.main.bundlePath ){
        for file in files {
            print(file)
        }
    }
8
répondu Matt Frear 2017-08-10 19:21:52

Liste De Tous Les Fichiers Dans 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
     }

Récursivement L'Énumération 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 son ici

6
répondu iGo 2013-11-20 08:45:46

Swift 3 (et URL de retour)

let url = Bundle.main.resourceURL!
    do {
        let urls = try FileManager.default.contentsOfDirectory(at: url, includingPropertiesForKeys:[], options: FileManager.DirectoryEnumerationOptions.skipsHiddenFiles)
    } catch {
        print(error)
    }
4
répondu narco 2016-11-12 23:17:39

Swift 4:

si vous avez à faire avec les sous-répertoires "relatif au projet " (dossiers bleus) vous pouvez écrire:

func getAllPListFrom(_ subdir:String)->[URL]? {
    guard let fURL = Bundle.main.urls(forResourcesWithExtension: "plist", subdirectory: subdir) else { return nil }
    return fURL
}

Utilisation :

if let myURLs = getAllPListFrom("myPrivateFolder/Lists") {
   // your code..
}
1
répondu Alessandro Ornano 2018-02-21 19:34:54