Feedback

VB - Alle Dateien eines Ordners auflisten

Veröffentlicht von am 26.11.2006
(1 Bewertungen)
Diese Funktion sucht nach allen Dateien in einem Ordner und optional auch in Unterordnern. Man bekommt die Dateiliste als "List(Of String)" zurück.
Snippet in C# übersetzen
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
Abgelegt unter Suche, Datei, Auflisten, GetFiles, GetDirectories.

1 Kommentare zum Snippet

niemand schrieb am 22.11.2011:
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:

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


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.
 

Logge dich ein, um hier zu kommentieren!