Question

Je travaille sur une application pour les iPhones jailbreakés. J'essaie d'obtenir que les répertoires d'un dossier. donc je fais ceci:

NSArray *contentOfFolder = [[NSFileManager defaultManager] directoryContentsAtPath:path];
NSLog(@"contentOfFolder: %@", contentOfFolder);
directoriesOfFolder = [[NSMutableArray alloc] initWithCapacity:100];
for (NSString *aPath in contentOfFolder) {
    NSLog(@"apath: %@", aPath);

    BOOL isDir;
if ([[NSFileManager defaultManager] fileExistsAtPath:aPath isDirectory:&isDir] &&isDir)
    {
        [directoriesOfFolder addObject:aPath];
        NSLog(@"directoriesOfFolder %@", directoriesOfFolder);
    }
}
NSLog(@"dirctories %@", directoriesOfFolder);

mais regardez ce que je reçois. quand je reçois le contenu du dossier tout semble bien:

2009-07-28 23: 23: 35,930 Drowser [573: 207] nouveau chemin / private / var 2009-07-28 23: 23: 35,945 Drowser [573: 207] contentOfFolder: (     Porte-clés,     « Géré Préférences »,     MobileDevice,     sauvegardes,     cache,     db,     ea,     vide,     Dossiers,     lib,     local,     fermer à clé,     bûche,     journaux,     mobile,     msgs,     préférences,     racine,     courir,     bobine,     planque,     tmp,     vm )

mais:

2009-07-28 23: 23: 35,950 Drowser [573: 207] aLigne: Porte-clés 2009-07-28 23: 23: 35,954 Drowser [573: 207] aLigne: Préférences Managed 2009-07-28 23: 23: 35,959 Drowser [573: 207] aLigne: MobileDevice 2009-07-28 23: 23: 35,984 Drowser [573: 207] aLigne: sauvegardes 2009-07-28 23: 23: 35,993 Drowser [573: 207] aLigne: cache 2009-07-28 23: 23: 36,002 Drowser [573: 207] aLigne: db 2009-07-28 23: 23: 36,011 Drowser [573: 207] aLigne: ea 2009-07-28 23: 23: 36,019 Drowser [573: 207] aLigne: vide 2009-07-28 23: 23: 36,028 Drowser [573: 207]: aLigne dossiers 2009-07-28 23: 23: 36,037 Drowser [573: 207] aLigne: lib 2009-07-28 23: 23: 36,046 Drowser [573: 207] directoriesOfFolder (     lib )

ne "lib"! est reconnu comme dossier. comment cela peut-il être? les autres sont des dossiers aussi. Je confirme via SSH.

Quelqu'un at-il une idée? Est-ce que je fais quelque chose de mal?

Était-ce utile?

La solution

Ceci est une erreur vraiment facile à faire, mais il est aussi très facile à corriger. Énumération des contenu d'un répertoire vous donne seulement le nom de l'élément, et non pas le chemin complet de l'élément. Vous devez construire le chemin complet vous. Alors, où vous avez:

for (NSString *aPath in contentOfFolder) {
  NSLog(@"apath: %@", aPath);

  BOOL isDir;
  if ([[NSFileManager defaultManager] fileExistsAtPath:aPath isDirectory:&isDir] &&isDir) {
    [directoriesOfFolder addObject:aPath];
    NSLog(@"directoriesOfFolder %@", directoriesOfFolder);
  }
}

Vous devriez vraiment avoir ceci:

for (NSString *aPath in contentOfFolder) {
  NSString * fullPath = [path stringByAppendingPathComponent:aPath];

  BOOL isDir;
  if ([[NSFileManager defaultManager] fileExistsAtPath:fullPath isDirectory:&isDir] &&isDir) {
    [directoriesOfFolder addObject: fullPath];
  }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top