Feedback

Alle Dateien eines Ordners auflisten

Sprache: VB

Diese Funktion sucht nach allen Dateien in einem Ordner und optional auch in Unterordnern. Man bekommt die Dateiliste als "List(Of String)" zurück.
Public Class ListFiles
    ''' <summary>
    ''' Diese Funktion sucht nach allen Dateien in einem Ordner und optional auch in Unterordnern
    ''' </summary>
    ''' <param name="Root">Der Ordner dessen Dateien aufgelistet werden sollen</param>
    ''' <param name="SubFolders">Gibt an ob auch die Unterordner durchsucht werden sollen</param>
    Public Shared Function GetFileList(ByVal Root As String, Optional ByVal SubFolders As Boolean = True) As List(Of String)
        Dim FileList As New List(Of String)
        SeekFiles(Root, FileList, SubFolders)
        Return FileList
    End Function

    Private Shared Sub SeekFiles(ByVal Root As String, ByRef FileArray As List(Of String), ByVal SubFolders As Boolean)
        Try
            Dim Files() As String = System.IO.Directory.GetFiles(Root)
            Dim Folders() As String = System.IO.Directory.GetDirectories(Root)

            For i As Integer = 0 To UBound(Files)
                FileArray.Add(Files(i).ToString)
            Next

            If SubFolders = True Then
                For i As Integer = 0 To UBound(Folders)
                    SeekFiles(Folders(i), FileArray, SubFolders)
                Next
            End If
        Catch Ex As Exception
        End Try
    End Sub
End Class
Public Class ListFiles
    ''' <summary>
    ''' Diese Funktion sucht nach allen Dateien in einem Ordner und optional auch in Unterordnern
    ''' </summary>
    ''' <param name="Root">Der Ordner dessen Dateien aufgelistet werden sollen</param>
    ''' <param name="SubFolders">Gibt an ob auch die Unterordner durchsucht werden sollen</param>
    Public Shared Function GetFileList(ByVal Root As String, Optional ByVal SubFolders As Boolean = True) As List(Of String)
        Dim FileList As New List(Of String)
        SeekFiles(Root, FileList, SubFolders)
        Return FileList
    End Function

    Private Shared Sub SeekFiles(ByVal Root As String, ByRef FileArray As List(Of String), ByVal SubFolders As Boolean)
        Try
            Dim Files() As String = System.IO.Directory.GetFiles(Root)
            Dim Folders() As String = System.IO.Directory.GetDirectories(Root)

            For i As Integer = 0 To UBound(Files)
                FileArray.Add(Files(i).ToString)
            Next

            If SubFolders = True Then
                For i As Integer = 0 To UBound(Folders)
                    SeekFiles(Folders(i), FileArray, SubFolders)
                Next
            End If
        Catch Ex As Exception
        End Try
    End Sub
End Class

1 Kommentar

  1. Ok, es gibt eindeutig keine „ordentliche“ Lösung (ich baue auf „einfachen“ Code, weiß nicht, warum alle immer so hochkompliziert denken müssen!) um Ordner innerhalb eines Ordners in einem schönen Array anzuzeigen. Jedenfalls funktioniert o.g. Lösung nicht oder ich bin einfach nur zu blöd, mit den 3 Zeilen Kommentaren die Lösung in mein Projekt einzubinden.

    Folgendes funktionierte übrigens auch nicht:

    [code]Private Sub Main_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    Dim sItem As String
    Dim sPath As String

    sPath = Path.GetDirectoryName(Application.ExecutablePath)
    sItem = Dir(sPath, vbDirectory)

    Do While sItem <> „“
    If sItem <> „.“ And sItem <> „..“ Then
    If (GetAttr(sPath & sItem) And vbDirectory) = vbDirectory Then
    liste1.Items.Add(sItem)
    End If
    End If
    sItem = Dir()
    Loop

    End Sub[/code]

    Wenn einer den Fehler findet, darf er ihn behalten und für eigene Zwecke missbrauchen. Dies ist der Kommentarbereich, keine Möglichkeit zur Kommunikation untereinander.