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 16 248 fois - Téléchargée 33 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 fichiers
Dim tab() as String = getFilesInDirectory("d:\")

'Renvoie tous les fichiers ayant l'extension .mp3 ou .avi
Dim tab() as String = getFilesInDirectory("d:\","mp3;avi")

Source / Exemple :


'Charge un tableau de String avec la liste des chemins d'accès des fichiers d'une arborescence
    Private Function getFilesInDirectory(ByVal path As String, Optional ByVal ext As String = "") As String()
        'Déclarations
        Dim dir As IO.Directory
        Dim arrFiles As New ArrayList
        Dim file As String
        Dim tabExt() As String = Split(ext, ";")
        Dim nbExt As Int32 = tabExt.Length
        Dim i, j As Int32
        Dim trouve As Boolean

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

            'Pour chaque fichiers du tableau...
            i = 0
            While i < arrFiles.Count
                file = arrFiles(i)

                '...si c'est un répertoire
                If dir.Exists(file) Then
                    '...alors on ajoute tous les fichiers qu'il contient...)
                    arrFiles.AddRange(getFilesInDirectory(file, ext))
                End If

                '... 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
                If dir.Exists(file) Then
                    arrFiles.RemoveAt(i)
                Else
                    'test d'extension
                    trouve = False
                    j = 0
                    While Not trouve AndAlso j <= nbExt - 1
                        If file.EndsWith("." & tabExt(j)) Then
                            trouve = True
                        Else
                            j += 1
                        End If
                    End While

                    'S'il a pas trouvé les extensions... on le supprime
                    If Not trouve Then
                        arrFiles.RemoveAt(i)
                    Else
                        i += 1
                    End If

                End If
            End While

            Return (arrFiles.ToArray(GetType(String)))

        Catch ex As Exception
            MsgBox(ex.Message, MsgBoxStyle.Critical, "Erreur")
            Return (Nothing)
        End Try
    End Function

Conclusion :


Pour les explications, regardez les commentaires, je trouve que c'est suffisant!

A voir également

Ajouter un commentaire Commentaires
cs_Stephane33 Messages postés 630 Date d'inscription samedi 15 février 2003 Statut Modérateur Dernière intervention 9 octobre 2011 1
3 févr. 2006 à 22:30
Perso chez moi ça ne marche pas, aucune valeur dans mon tableau
cs_Patrice99 Messages postés 1221 Date d'inscription jeudi 23 août 2001 Statut Membre Dernière intervention 9 septembre 2018
21 sept. 2005 à 12:16
ca ne marche pas chez moi : ca ne compile pas en mode strict (pas moyen de transformer un ArrayList d'objet en Array de string) et en mode non strict, il ne parvient pas à renvoyer la liste en tant que tableau de string : elle est vide.
Chris_LaFouine Messages postés 109 Date d'inscription mardi 13 avril 2004 Statut Membre Dernière intervention 4 juin 2008
30 mai 2005 à 14:49
La classe ArrayListEx est au tout début dsu code source, mais je me suis rendu compte qu'elle est inutile... je vais faire une madif dans pas trop longtemps!
ghamir Messages postés 3 Date d'inscription mercredi 25 mai 2005 Statut Membre Dernière intervention 7 juin 2005
30 mai 2005 à 13:57
Ou avez-vous mis la classe ArrayListEx SVP?
Chris_LaFouine Messages postés 109 Date d'inscription mardi 13 avril 2004 Statut Membre Dernière intervention 4 juin 2008
23 mai 2005 à 13:12
FeelCode, je n'arrive pas à trouver cette fonction!!!

J'ai essayé ta solution Pym Corp, mais ça ne renvoie uniquement les fichiers d'un dossier, il ne parcourt pas l'arborescence entière (pas les sous dossiers).

Donc, ma source est bien utile... il y a surement une amélioration possible, surtout pour le recopitage du contenu d'un tableau dans un autre tableau! Mais c'est en cours de recherches!
Afficher les 7 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.