Verschiedene Fragen zum Auslesen von Dateien und Ordnern

  • VB.NET

Es gibt 8 Antworten in diesem Thema. Der letzte Beitrag () ist von Mangafreak1995.

    Verschiedene Fragen zum Auslesen von Dateien und Ordnern

    Hi, ich habe folgendes Problem: Ich habe einen Ordner mit mehreren Unterordnern, in diesen Unterordnern mehrere Dateien mit verschiedenen Dateinamen und verschiedene Dateierweiterungen, keine weiteren Ordner. Ich möchte alle Unterordner nach Dateien eines bestimmten Typs Durchsuchen und die Dateinamen ohne die Erweiterung in eine ListBox eintragen. Ich kann bisher komplette Pfade inklusive Dateiname und Erweiterung in Listen eintragen, ich kann bisher keine Dateinamen ohne Pfad und Erweiterung anzeigen. Das hier ist mein Code:

    Quellcode

    1. Dim verzeichnis As String
    2. Dim unterordner() As String
    3. Dim dateien() As String
    4. Dim i As Integer
    5. Dim j As Integer
    6. Directory.SetCurrentDirectory("C:\Users\Chris\Desktop\Neuer Ordner (2)")
    7. verzeichnis = Directory.GetCurrentDirectory()
    8. unterordner = Directory.GetDirectories(verzeichnis)
    9. lstUnterordner.Items.Clear()
    10. For i = 0 To unterordner.Count - 1
    11. lstUnterordner.Items.Add(unterordner(i))
    12. dateien = Directory.GetFiles(unterordner(i),"*.txt")
    13. For j = 0 To dateien.Count - 1
    14. lstDateien.Items.Add(dateien(j))
    15. Next
    16. Next

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Kincaid“ ()

    Sorry, bin wirklich noch ziemlich neu in Visual Basic.

    Wie kann ich System.IO.Path.GetFileNameWithoutExtension("C:\Users\Chris\Desktop\Neuer Ordner (2)") weiterverarbeiten?

    dateien = System.IO.Path.GetFileNameWithoutExtension("C:\Users\Chris\Desktop\Neuer Ordner (2)") gibt mir die Fehlermeldung "Der Wert vom Typ "String" kann nicht in "1-dimensionales Array von String" konvertiert werden."


    Über Google bin auch auf diese Codezeile gestoßen:

    Array.ForEach(IO.Directory.GetFiles("C:\"), Function(file As String) ListBox1.Items.Add(IO.Path.GetFileNameWithoutExtension(file)))

    wenn ich "C:\" mit "unterordner(i)" ersetze stürzt mein Programm ab, trage ich einen Pfad von Hand ein klappt es.


    Edit: Alles klar, ich habs:

    Quellcode

    1. Dim verzeichnis As String
    2. Dim dateiliste() As String
    3. Dim i As Integer
    4. Directory.SetCurrentDirectory("C:\Users\Chris\Desktop\Neuer Ordner (2)")
    5. verzeichnis = Directory.GetCurrentDirectory()
    6. dateiliste = Directory.GetFiles(verzeichnis, "*.txt", SearchOption.AllDirectories)
    7. lstDateien.Items.Clear()
    8. For i = 0 To dateiliste.Count - 1
    9. lstDateien.Items.Add(Path.GetFileNameWithoutExtension(verzeichnis))
    10. Next


    Ist das ok so oder gibts vllt sogar ne einfachere, bessere Möglichkeit?

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Kincaid“ ()

    Wundert mich das das tut, Du musst hier

    VB.NET-Quellcode

    1. lstDateien.Items.Add(Path.GetFileNameWithoutExtension(verzeichnis))

    die entsprechende Datei aus der Dateiliste nehmen und nicht das Verzeichnis. Aber immerhin fast richtig.

    Folgender Beispielcode als Vergleich:

    VB.NET-Quellcode

    1. ' zu durchsuchender Ordner
    2. Dim verzeichnis As String = "C:\Users\Chris\Desktop\Neuer Ordner (2)"
    3. ' enthaltene Text-Dateien
    4. Dim dateien() As String = Directory.GetFiles(verzeichnis, "*.txt", SearchOption.AllDirectories)
    5. ' alle Dateien ohne Pfad und Extension ausgeben
    6. For i As Integer = 0 To dateien.Length - 1
    7. Debug.Print(Path.GetFileNameWithoutExtension(dateien(i)))
    8. Next
    Gibt es jetzt noch eine Möglichkeit, die Dateiliste alphabetisch zu Ordnen?
    Im moment ist ja jeder Ordner/Unterordner für sich geordnet.
    In der gesamten Dateiliste ist das ja dann aber nicht mehr alphabetisch geordnet.

    Würde mich freuen wenn jmd weiterhelfen könnte.

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Ztro“ ()

    Ztro schrieb:

    Gibt es jetzt noch eine Möglichkeit, die Dateiliste alphabetisch zu Ordnen?

    Schau Dir Array.Sort an, da gibt es (fast) unendlich viele Möglichkeiten.

    Wenn Du den gesamten pfadnamen alphabetisch sortieren willst , machst Du es mit Array.Sort(Dateien)

    @Manga wieso hast Du für diese lange Antwort 5 Minuten gebraucht ? :rolleyes:

    Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von „Kangaroo“ ()