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

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

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.