2010-05-14 6 views
1

J'essaie de compter des fichiers entiers dans un répertoire, y compris les sous-répertoires. C'est ce que je dois compter les fichiers dans le premier dossier:Compter les fichiers dans les répertoires ET sous-répertoires? iPhone

-(NSString *)numberOfPhotos 
{ 
    NSString *MyPath = @"/rootdirectory/"; 
    NSArray *directoryContent = [[NSFileManager defaultManager] directoryContentsAtPath:MyPath]; 

    return [NSString stringWithFormat:@"%d", [directoryContent count]]; 
} 

Je pensais peut-être quelque chose comme

for (file in folder){ 
    [file count] 
{ 

mais ne marche pas semble fonctionner.

MISE À JOUR: En fait, était très facile:

NSDirectoryEnumerator *subs = [[NSFileManager defaultManager] subpathsOfDirectoryAtPath:musicPath error:nil]; 

Répondre

5
NSDirectoryEnumerator *subs = [[NSFileManager defaultManager] subpathsOfDirectoryAtPath:musicPath error:nil]; 
+0

Il retournera un objet de NSArray non NSDirectoryEnumerator – dark

+0

NSArray * subs = [[NSFileManager defaultManager] subpathsOfDirectoryAtPath: erreur musicPath: nulle]; – BhushanVU

3

Vous êtes sur la bonne voie. Vous avez besoin d'une méthode récursive. Vous passez dans un répertoire, la méthode récupère tous les fichiers dans le répertoire, puis vérifie chacun pour voir s'il s'agit d'un répertoire ou pas. Ici, vous avez une boucle for pour vérifier si l'objet en cours est un répertoire. Si c'est un répertoire, alors il s'appellera avec le nom du répertoire. Sinon, il incrémente un compteur de un et continue.

Impossible de publier du code maintenant, mais c'est comme cela que vous le feriez.

+0

plz poste quand vous le pouvez! – WrightsCS

+0

J'ai posté du code pseudo pour que vous puissiez voir l'algorithme récursif dans une autre réponse. – progrmr

+0

+1, coin nitpick: Vous n'avez pas exactement _need_ un algorithme récursif pour traverser un arbre, mais c'est certainement plus facile ;-) –

1

voir si je peux écrire du code en utilisant le clavier iPad ... En utilisant du code pseudo pour décrire l'algorithme récursif:

int fileCount(directory) 
{ 
    int count = 0; 
    for (file in directory) 
    { 
     if (isDirectory(file)) 
      count += fileCount(file); 
     else 
      count++; 
    } 
    return count; 
}     
Questions connexes