Dateiendungen Auslesen

  • VB.NET

Es gibt 10 Antworten in diesem Thema. Der letzte Beitrag () ist von nikeee13.

    Dateiendungen Auslesen

    Guten Tag Community,

    ich bin neu hier und freue mich schon mit euch zusammen Probleme zulösen.

    Naja nun muss ich zugeben ich habe ein Problem mitgebracht :).

    Seit zwei tagen suche ich im Web nach einer Möglichkeit alle Dateiendung aus einem Ordner Auszulessen.

    bla.exe
    blub.txt
    .....bmp
    usw..

    Möchte so zusagen alle Dateiendung ermitteln und dann in einer Lable Speichern.

    exe
    txt
    bmp

    Das Program soll mir nur einmal eine Endung angeben auch wenn im Ordner mehrere Dateien mit gleicher Endung vorhanden sind.

    Vielleicht habt Ihr ja eine Idee.

    Vielen Dank schonmal im voraus für eure Hilfe.

    VG
    Digital
    „Was daraus gefolgert werden kann ist, dass jeder intelligentere User sein Geld lieber für Bier ausgibt, um einen schönen Rausch zu haben, und nicht dieses Ranzprodukt.“

    -Auszug aus einer Unterhaltung über das iPhone und dessen Vermarktung.
    @Digital

    VB.NET-Quellcode

    1. Using fbd As New FolderBrowserDialog
    2. If fbd.ShowDialog = DialogResult.OK Then
    3. Dim fi As New IO.DirectoryInfo(fbd.SelectedPath)
    4. For Each file In fi.GetFileSystemInfos()
    5. Dim fi_ As New IO.FileInfo(file.FullName)
    6. If fi_.Extension <> Nothing Then
    7. ListBox1.Items.Add(fi_.Extension)
    8. End If
    9. Next
    10. End If
    11. End Using

    So würde ich es machen.

    Edit:
    Vlt schöner:

    VB.NET-Quellcode

    1. Using fbd As New FolderBrowserDialog
    2. If fbd.ShowDialog = Windows.Forms.DialogResult.OK Then
    3. Dim files() As IO.FileInfo = New IO.DirectoryInfo(fbd.SelectedPath).GetFiles()
    4. For Each fi In files
    5. ListBox1.Items.Add(fi.Extension)
    6. Next
    7. End If
    8. End Using

    Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von „LaMiy“ ()

    @ LaMiy

    Vielen Dank für deine Antwort sie hat mir weitergeholfen.
    Hast du vielleicht noch eine Idee wie ich den Punkt weg bekomme?
    Das hatte ich vergessen zu erähnen sorry.

    Da ich die Endungen für die Namen der Ordner benötige, in die ich nachher die zugehörigen Dateien einsortieren möchte.

    Vg

    Digital
    @LaMiy: In die ListBox kommen die FileInfo-Instanzen, das DisplayMember der ListBox wird auf "Extension" gesetzt!
    Wenn Du nachher den ganzen Filenamen haben willst, musst Du nur das DisplayMember anzupassen:

    VB.NET-Quellcode

    1. Private Sub CheckBox1_CheckedChanged(sender As System.Object, e As System.EventArgs) Handles CheckBox1.CheckedChanged
    2. If CheckBox1.Checked Then
    3. ListBox1.DisplayMember = "Extension"
    4. Else
    5. ListBox1.DisplayMember = "Name"
    6. End If
    7. End Sub
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    Hey,

    da es augenscheinlich nur um die Dateiendungen geht, mach es iwi so in der Art:

    VB.NET-Quellcode

    1. Imports System.ComponentModel
    2. Imports System.IO
    3. Public Class Form1
    4. Private _listExt As New BindingList(Of String)
    5. Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
    6. Dim sourceDir As New DirectoryInfo("d:\downloads")
    7. Dim result = From fI As FileInfo In sourceDir.GetFiles Select ext = fI.Extension Distinct Order By ext Ascending
    8. For Each s As String In result
    9. _listExt.Add(s)
    10. Next
    11. Me.ListBox1.DataSource = _listExt
    12. End Sub
    13. End Class


    Gibt natürlich mehrere Lösungen für Dein Problem, dies ist mein Vorschlag.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o

    Digital schrieb:

    Gibt es ein Möglichkeit das jeder Datentyp nur einmal aufgelist wird??
    Liste mit allen, leere Liste mit Zielgröße.
    Schleife über die Member der Liste mit allen, bei jedem fragen, ob Zielgröße in der Liste mit Zielgröße vorhanden ist, Nein: Hinzufügen.
    Feddich.
    Falls Du diesen Code kopierst, achte auf die C&P-Bremse.
    Jede einzelne Zeile Deines Programms, die Du nicht explizit getestet hast, ist falsch :!:
    Ein guter .NET-Snippetkonverter (der ist verfügbar).
    Programmierfragen über PN / Konversation werden ignoriert!
    @SpaceyX

    muss mal blöde fragen:
    Der Ausdruck ist Linq oder?
    Hab ich so noch nie gelesen und bin beeindruckt! :) :) :)

    SpaceyX schrieb:



    VB.NET-Quellcode

    1. '[...]
    2. Dim result = From fI As FileInfo In sourceDir.GetFiles Select ext = fI.Extension Distinct Order By ext Ascending
    3. '[...]

    :!: Danke an alle, die ihr Wissen freiwillig teilen und stets so kompetent & höflich sind :!:
    Ich bevorzuge die Extension Methods:

    VB.NET-Quellcode

    1. sourceDir.GetFiles().Select(Of String)(Function(f) f.Extension).Distinct()

    Lässt sich meiner Meinung nach einfacher lesen und optimieren. Wenn man z. B. am Anfang ein GroupBy oder Sort hat, muss die komplette IEnumerable-Instanz geladen werden, weshalb man die immer so weit nach hinten verschieben sollte, wie möglich. Das kann einem leicht den RAM füllen, wenn man nicht aufpasst. Aus der der Query-Syntax geht das nicht immer so gut hervor (IMO).
    Von meinem iPhone gesendet