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

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.