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 15 755 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 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

Perso chez moi ça ne marche pas, aucune valeur dans mon tableau
cs_Patrice99
Messages postés
1222
Date d'inscription
jeudi 23 août 2001
Statut
Membre
Dernière intervention
9 septembre 2018

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

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

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

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!

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.