Files in ein Ordner auflisten mit mehreren Dateitypen als vorgabe?

  • VB.NET

Es gibt 15 Antworten in diesem Thema. Der letzte Beitrag () ist von eminem.

    Files in ein Ordner auflisten mit mehreren Dateitypen als vorgabe?

    Hallo, ich hab folgenes Problem:

    Ich möchte mehrere dateitypen in einen Ordner auflisten lassen, ist für alle Dateien oder einer bestimmten kein thema:

    VB.NET-Quellcode

    1. Dim sPath As String
    2. sPath = "C:\"
    3. If sPath.EndsWith("\") And sPath.Length > 3 Then
    4. sPath = sPath.Substring(0, sPath.Length - 1)
    5. End If
    6. Dim oDir As New System.IO.DirectoryInfo(sPath)
    7. Dim oFiles As System.IO.FileInfo() = oDir.GetFiles()
    8. Dim oFile As System.IO.FileInfo
    9. CheckedListBox1.Items.Clear()
    10. For Each oFile In oFiles
    11. CheckedListBox1.Items.Add(oFile)
    12. Next


    Ich weiß wenn man:

    VB.NET-Quellcode

    1. Dim oFiles As System.IO.FileInfo() = oDir.GetFiles("*.avi")
    oder es leer läst gefiltert wird, nur wie kann ich das mit mehreren machen
    also so zum beipsiel:

    VB.NET-Quellcode

    1. Dim oFiles As System.IO.FileInfo() = oDir.GetFiles("*.avi;*.mp4")
    denn so funktioniert das leider nicht :(
    MFG
    LEON
    _______________________________________________
    Entweder man ist Teil der Lösung oder Teil des Problems.

    VB.NET-Quellcode

    1. Dim ExtensionsA As New HashSet(Of String)(".mp4 .avi".Split)
    2. Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
    3. Dim Files() As String = Directory.GetFiles("C:\")
    4. For var_i As Integer = 0 To Files.Count - 1
    5. If ExtensionsA.Contains(Path.GetExtension(Files(var_i)).ToLower) Then
    6. '#######Gefilterte Datein#########################
    7. End If
    8. Next
    9. End Sub
    Danke werde es gleich testen :)

    Nachtrag:
    Funktioniert super, nur leider wird der Komplette Pfad mit angezeigt, statt nur die datei wenn ich diesen in der Listbox eintrage :(
    MFG
    LEON
    _______________________________________________
    Entweder man ist Teil der Lösung oder Teil des Problems.

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

    Danke, nur irgendwie bekomm ich grad ein fehler?
    womit soll ich das genau ersetzen?
    MFG
    LEON
    _______________________________________________
    Entweder man ist Teil der Lösung oder Teil des Problems.

    VB.NET-Quellcode

    1. Imports System.IO
    2. Public Class Form1
    3. Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    4. Dim dI As New DirectoryInfo("d:\downloads")
    5. Dim files() As FileInfo = dI.GetFiles()
    6. Dim ext As New List(Of String)
    7. ext.Add(".jpg")
    8. ext.Add(".bmp")
    9. For Each fI As FileInfo In files
    10. If ext.Contains(fI.Extension.ToLower()) Then
    11. MessageBox.Show(fI.Name)
    12. End If
    13. Next
    14. End Sub
    15. End Class


    fi.Name gibt Dir den Dateinamen ohne Pfad. Die FileInfo-Klasse hat alles, was man braucht.
    Die Unendlichkeit ist weit. Vor allem gegen Ende. ?(
    Manche Menschen sind gar nicht dumm. Sie haben nur Pech beim Denken. 8o

    SpaceyX schrieb:

    VB.NET-Quellcode

    1. Imports System.IO
    2. Public Class Form1
    3. Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
    4. Dim dI As New DirectoryInfo("d:\downloads")
    5. Dim files() As FileInfo = dI.GetFiles()
    6. Dim ext As New List(Of String)
    7. ext.Add(".jpg")
    8. ext.Add(".bmp")
    9. For Each fI As FileInfo In files
    10. If ext.Contains(fI.Extension.ToLower()) Then
    11. MessageBox.Show(fI.Name)
    12. End If
    13. Next
    14. End Sub
    15. End Class


    fi.Name gibt Dir den Dateinamen ohne Pfad. Die FileInfo-Klasse hat alles, was man braucht.

    Jup so solltes doch laufen.
    Vielen Dank, das funktioniert ja spitze, allerdings ist es komisch, denn ich wollte auch die Unterordner mit einbeziehen mit:

    VB.NET-Quellcode

    1. IO.SearchOption.AllDirectories
    nur irgendwie spuckt er dann nichts mehr aus :(

    Also:

    VB.NET-Quellcode

    1. Dim dI As New DirectoryInfo("D:\")
    2. Dim files() As FileInfo = dI.GetFiles(IO.SearchOption.AllDirectories)
    3. Dim ext As New List(Of String)
    4. ext.Add(".avi")
    5. ext.Add(".mp4")
    6. For Each fI As FileInfo In files
    7. If ext.Contains(fI.Extension.ToLower()) Then
    8. CheckedListBox1.Items.Add(fI.Name)
    9. End If
    10. Next


    Ich hab doch da wieder falsch gedacht oder?
    MFG
    LEON
    _______________________________________________
    Entweder man ist Teil der Lösung oder Teil des Problems.
    Natürlich!

    Klar ich hab mich wegen der if einwenig verwirren lassen :)
    jetzt funktioniert es perfekt, danke an euch beiden ;)
    MFG
    LEON
    _______________________________________________
    Entweder man ist Teil der Lösung oder Teil des Problems.
    Du kannst es auch gleich richtig machen:

    VB.NET-Quellcode

    1. Dim dI As New DirectoryInfo("c:\temp")
    2. Me.CheckedListBox1.Items.AddRange(dI.GetFiles("*.png", IO.SearchOption.AllDirectories))
    3. Me.CheckedListBox1.Items.AddRange(dI.GetFiles("*.tiff", IO.SearchOption.AllDirectories))
    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!
    Das ist auch eine Lösung :)

    Jetzt mal eine frage:
    Und zwar bewirkt ja die IO.SearchOption.AllDirectories eine tiefensuche, also Unterordner, allerdings hab ich das Problem wenn ich C:\ oder auch D:\ suchen lasse, gibt halt immer Zugriff Verweigert und die Suche wird unterbrochen und das passiert auch wenn ich das Programm mit Admin starten, gibt es dafür eine lösung?
    MFG
    LEON
    _______________________________________________
    Entweder man ist Teil der Lösung oder Teil des Problems.

    eminem schrieb:

    gibt es dafür eine lösung?
    Das ist leider so, System-Ordner kannst Du nicht durchsuchen.
    Hier sei Dir gestattet, dies mit Try / Catch und AccessDeniedException (oder so) zu umgehen.
    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!
    ja die Try hab ich, nur er stoppt halt direkt und macht nicht weiter, also mir wär es auch recht wenn er diese Ordner überspringt nur das tut er leider nicht :(
    MFG
    LEON
    _______________________________________________
    Entweder man ist Teil der Lösung oder Teil des Problems.
    Dann musste halt die Ordner einzeln auslesen, nicht in For Each.
    Oder Du gibst die Namen der erlaubten / möglichen Root-Ordner vor.
    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!