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 22 878 fois - Téléchargée 29 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

Messages postés
6352
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
82
Effectivement, si tu prends les choses dans ce sens là, ça se tiens :D
Messages postés
5487
Date d'inscription
dimanche 4 août 2002
Statut
Modérateur
Dernière intervention
20 juin 2013
49
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
Messages postés
6352
Date d'inscription
samedi 1 juin 2002
Statut
Modérateur
Dernière intervention
2 août 2014
82
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
Messages postés
6
Date d'inscription
jeudi 11 mars 2004
Statut
Membre
Dernière intervention
24 août 2005

Merci ca me suffira pour le moment..:)
Messages postés
4936
Date d'inscription
lundi 17 février 2003
Statut
Modérateur
Dernière intervention
14 février 2014
32
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.