Unix possède une bibliothèque qui peut effectuer des opérations de globbing de fichiers pour vous. Les fonctions et les types sont déclarés dans un en-tête appelé glob.h
Vous devrez donc #include
il. Si vous ouvrez un terminal et ouvrez la page de manuel pour glob en tapant man 3 glob
vous obtiendrez toutes les informations dont vous avez besoin pour utiliser les fonctions.
Voici un exemple de la façon dont vous pouvez remplir un tableau avec les fichiers qui correspondent à un modèle de globbing. Lorsque vous utilisez la méthode glob
fonction, il y a quelques éléments que vous devez garder à l'esprit.
- Par défaut, le
glob
recherche les fichiers dans le répertoire de travail actuel. Afin de rechercher dans un autre répertoire, vous devrez ajouter le nom du répertoire au motif de globbing, comme je l'ai fait dans mon exemple pour obtenir tous les fichiers de /bin
.
- Vous êtes responsable du nettoyage de la mémoire allouée par le programme
glob
en appelant globfree
quand vous aurez fini avec la structure.
Dans mon exemple, j'utilise les options par défaut et aucun rappel d'erreur. La page de manuel couvre toutes les options au cas où vous voudriez utiliser quelque chose. Si vous utilisez le code ci-dessus, je vous suggère de l'ajouter en tant que catégorie dans le fichier NSArray
ou quelque chose comme ça.
NSMutableArray* files = [NSMutableArray array];
glob_t gt;
char* pattern = "/bin/*";
if (glob(pattern, 0, NULL, >) == 0) {
int i;
for (i=0; i<gt.gl_matchc; i++) {
[files addObject: [NSString stringWithCString: gt.gl_pathv[i]]];
}
}
globfree(>);
return [NSArray arrayWithArray: files];
Edit : J'ai créé un gist sur github qui contient le code ci-dessus dans une catégorie appelée NSArray+Globbing .
0 votes
La réponse de Brian Webster m'a beaucoup aidé dans un problème similaire. stackoverflow.com/questions/5105250/
1 votes
Si vous lisez ceci, vous pouvez résoudre ce problème en plaçant vos fichiers dans un dossier. stackoverflow.com/questions/1762836/