Récupérer la liste des fichiers (avec ou sans extension précise) d'une arborescence

Soyez le premier à donner votre avis sur cette source.

Snippet vu 23 748 fois - Téléchargée 31 fois

Contenu du snippet

Cette fonction renvoie un tableau de string avec le chemin d'accès de tous les fichiers se trouvant dans l'arborescence spécifiée en paramètre. exemple d'utilisation :

//Renvoie tous les chemins d'accès des fichiers contenus dans D: et ses sous-dossiers
String[] tab= getFilesInDirectory("d:\\","")

//Renvoie tous les chemins d'accès des fichiers contenus dans D: et ses sous-dossiers ayant l'extension .mp3 ou .avi
String[] tab= getFilesInDirectory("d:\\","mp3;avi")

Source / Exemple :


private String[] getFilesInDirectory(String path,String ext)
{
	try {					
		//Déclarations
		List<String> lst;
		String[] tabExt = ext.Split(';');
		Int32 i, j;
		Boolean trouve;

		//On copie tous les "fichiers" du répertoire path...
		//... dans le tableau lst	            
		lst.AddRange(dir.GetFileSystemEntries(path))

		i = 0;
		while(i < lst.Count) {		
			/* si le fichier n'a pas l'extension souhaitée...

  • ou que c'est un répertoire alors...
  • on supprime la ligne SANS incrémenter i...
  • car en supprimant, on va "remonter" tous les éléments...
  • suivant cette référence et l'élément suivant l'élément courant...
  • n'aurait pas été traité si on aurait incrémenté i
  • /
trouve = false; //Si c'est un dossier if(System.IO.Directory.Exists(file)) { //On ajoute tous les éléments de ce dossier (fichiers+répertoires) lst.AddRange(getFilesInDirectory(lst[i], ext)); } else { //test d'extension j = 0; while(!trouve && j <= nbExt - 1) { //Test de l'extension if(lst.EndsWith("." + tabExt[j])) { trouve = true; } else { j++; } } } //S'il a pas trouvé les extensions ou que c'est un dossier... on le supprime if(!trouve) { lst.RemoveAt(i); } else { i ++; } } return lst.ToArray(); } catch { return(null); } }

Conclusion :


Attention tout de même, j'utilise des Generics donc faut le Framework 2.0!!!
Par contre, j'ai déjà ce code en VB.NET 1.1... je viens de le faire à l'arach' en C# 2.0!!! Donc, c'est possible qu'il y ait des erreurs!
Je teste dès que je peux!

A voir également

Ajouter un commentaire Commentaires
cs_coq Messages postés 6351 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 99
13 août 2005 à 11:57
Effectivement, si tu prends les choses dans ce sens là, ça se tiens :D
cs_Bidou Messages postés 5487 Date d'inscription dimanche 4 août 2002 Statut Membre Dernière intervention 20 juin 2013 59
13 août 2005 à 11:46
coq > oui, mais puisque dans la description du programme c'est marqué

"Attention tout de même, j'utilise des Generics donc faut le Framework 2.0!!!
Par contre, j'ai déjà ce code en VB.NET 1.1... je viens de le faire à l'arach' en C# 2.0!!!"

je me dis que le framework 2 est utilisé :D
cs_coq Messages postés 6351 Date d'inscription samedi 1 juin 2002 Statut Membre Dernière intervention 2 août 2014 99
11 août 2005 à 21:35
En dehors de catcher l'exception UnauthorizedAccessException je ne vois pas non plus...
Je n'ai pas connaissance de méthode dans le framework pour tester les droits d'accès.
Si ça existe je suis client :-)
Peut être via les APIs mais autant utiliser l'exception :p
cs_djforever Messages postés 6 Date d'inscription jeudi 11 mars 2004 Statut Membre Dernière intervention 24 août 2005
11 août 2005 à 15:24
Merci ca me suffira pour le moment..:)
sebmafate Messages postés 4936 Date d'inscription lundi 17 février 2003 Statut Membre Dernière intervention 14 février 2014 38
11 août 2005 à 14:51
c'est moche mais, un try/catch ferait l'affaire...
Afficher les 22 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.