Hallo Community!
Wenn es darum geht, Dateien in einem Ordner und dessen Unterordner zu erfassen, kann man sich mit eingeschränkten For-Schleifen oder mit rekuriven Funktionen auseinandersetzen.
Ich stelle euch hier eine Funktion vor, die euch alle Dateien als ListViewItems zurückgibt, mit Info. (Warum ListViewItems? Nun, das stammt aus einem meiner kleinen Projekte, außerdem kann man sehr leicht mit ListViewItems umgehen.)
Hier der Source-Code:
Kleiner Exkurs "Was ist eine rekursive Funktion?"
Im Grunde ist eine rekursive Funktion eine Funktion, die sich bei Bedarf selbst wieder ausführt. Diese Methode der Entwicklung kann auch in anderen Programmiersprachen, zum Beispiel Java, verwendet werden - Bei geschickter Programmierung kann man so sehr leicht mit vergleichsweise wenig Code viel erreichen. Außerdem ist sie nicht nur auf Funktionen (Routinen mit Rückgabewert) beschränkt - Jede Methode (Sub) kann das ebenso gut. Es hängt nur vom Einsatzbereich der Methode/Funktion und deren Anforderungen ab.
MfG,
X-Zat / Momo
Wenn es darum geht, Dateien in einem Ordner und dessen Unterordner zu erfassen, kann man sich mit eingeschränkten For-Schleifen oder mit rekuriven Funktionen auseinandersetzen.
Ich stelle euch hier eine Funktion vor, die euch alle Dateien als ListViewItems zurückgibt, mit Info. (Warum ListViewItems? Nun, das stammt aus einem meiner kleinen Projekte, außerdem kann man sehr leicht mit ListViewItems umgehen.)
Hier der Source-Code:
VB.NET-Quellcode
- 'Parameter: pFolder als Pfad des zu durchsuchenden Ordners, pSuffix als Endung der zu suchenden Dateien (bei allen Typen "*.*")
- Public Function GetFiles(ByVal pFolder As String, ByVal pSuffix As String) As List(Of ListViewItem) 'Gibt eine Auflistung von ListViewItems zurück
- 'Eine temporäre Liste wird angelegt
- Dim TempLVI As New List(Of ListViewItem)
- 'Für jede Datei des Typs pSuffix im Ordner pFolder...
- For Each FILE As String In System.IO.Directory.GetFiles(pFolder, "*." & pSuffix, IO.SearchOption.TopDirectoryOnly)
- 'Erstelle neues ListViewItem und weise ihm Beizeichnung und Informationen in den Subitems zu
- Dim LVI As New ListViewItem
- LVI.Text = New System.IO.FileInfo(FILE).Name 'Dateiname
- With LVI
- .SubItems.Add(New System.IO.FileInfo(FILE).Directory.FullName) 'Ordner der Datei
- .SubItems.Add(Math.Round(New System.IO.FileInfo(FILE).Length / 1000, 2) & " KB") 'Größe der Datei (hier in KB, bis auf zwei Dezimalstellen gerundet
- 'Natürlich können hier noch Subitems hinzugefügt werden...
- End With
- 'Füge das ListViewItem der Liste hinzu
- TempLVI.Add(LVI)
- Next
- 'Für jeden Unterordner FOLDER des Ordners pFolder
- For Each FOLDER As String In System.IO.Directory.GetDirectories(pFolder)
- 'Für jedes ListViewItem LVI der zurückgegebenen Liste der rekursiv aufgerufenen Funktion
- For Each LVI As ListViewItem In GetFiles(FOLDER)
- 'Füge der temporären Liste die Ergebnisse des rekursiven Aufrufes hinzu
- TempLVI.Add(LVI)
- Next
- Next
- 'Gebe die komplette Liste zurück
- Return TempLVI
- End Function
- 'Beispiel für ein eigenes Programm:
- For Each LVI As ListViewItem In GetFiles("C:\","*")
- ListView1.Items.Add(LVI)
- Next
Kleiner Exkurs "Was ist eine rekursive Funktion?"
Im Grunde ist eine rekursive Funktion eine Funktion, die sich bei Bedarf selbst wieder ausführt. Diese Methode der Entwicklung kann auch in anderen Programmiersprachen, zum Beispiel Java, verwendet werden - Bei geschickter Programmierung kann man so sehr leicht mit vergleichsweise wenig Code viel erreichen. Außerdem ist sie nicht nur auf Funktionen (Routinen mit Rückgabewert) beschränkt - Jede Methode (Sub) kann das ebenso gut. Es hängt nur vom Einsatzbereich der Methode/Funktion und deren Anforderungen ab.
MfG,
X-Zat / Momo
Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „X-Zat“ ()