Suche bestimmte Dateien! Keine Leserechte!

  • VB.NET
  • .NET (FX) 1.0–2.0

Es gibt 11 Antworten in diesem Thema. Der letzte Beitrag () ist von RodFromGermany.

    Suche bestimmte Dateien! Keine Leserechte!

    Moin! :)
    Ich habe eine Sub, die nach JPGs Dateien suchen soll. Und die Gefundene Dateien in eine ListBox zusammenzufassen.
    Der Code läuft soweit.
    Aber immer wenn ein Verzeichnis keine Leserechte hat, schmiert der Code ab.
    Wer kann mir helfen?
    BIG THX

    Error: Der Zugriff auf den Pfad ""C:\Users\BenutzerName\Vorlagen"" wurde verweigert." :cursing:

    VB.NET-Quellcode

    1. Private Sub BilderAuslesen(text As String)
    2. Try
    3. Dim dirs As String() = IO.Directory.GetFiles(text, "*.jpg", IO.SearchOption.AllDirectories)
    4. For Each dir As String In dirs
    5. Me.ListBox1.Items.Add(dir)
    6. Next
    7. Catch ex As Exception
    8. MsgBox(ex.Message)
    9. End Try
    10. End Sub
    Visual Basic.NET 8o
    MS-SQL
    8o
    Hallo

    Ich würde dir empfehlen selbst alle Unterordner zu durchlaufen und die Funktion immer recursiv aufzurufen. So kannst du darauf reagieren und den Order wo kein Zugriff möglich ist auslassen.

    Grüße
    Sascha
    If _work = worktype.hard Then Me.Drink(Coffee)
    Seht euch auch meine Tutorialreihe <WPF Lernen/> an oder abonniert meinen YouTube Kanal.

    ## Bitte markiere einen Thread als "Erledigt" wenn deine Frage beantwortet wurde. ##

    @Nofear23m Jou.
    @Cheffboss Jetzt hast Du aber ein Problem, das hier im Forum schon gefühlte 1000 Mal behandelt wurde. Die Suchfunktion sollte Dir fertige Lösungen bieten.
    Und:
    Wenn Du mit Frau Google suchst, wirst Du schneller fündig, weil die Suchmaschine wesentlich intelligenter ist, es sei denn, Du kennst den Suchstring exakt.
    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!
    @an alle
    Vielen Dank, für eure Antwort. :)
    Leider habe ich bis jetzt noch nicht so einen guten Code geschrieben.

    VB.NET-Quellcode

    1. Private Sub SucheNachBildern(ByVal strPfad As String)
    2. Dim Folders() As String = System.IO.Directory.GetDirectories(strPfad)
    3. If Folders.Length = 0 Then
    4. ' Ohne Verzeichnise!
    5. Try
    6. For Each datei As String In System.IO.Directory.GetFiles(strPfad, "*.jpg", IO.SearchOption.AllDirectories)
    7. Me.ListBox1.Items.Add(datei)
    8. Next
    9. Catch
    10. End Try
    11. Else
    12. ' Mit Verzeichnise!
    13. For Each Folder In Folders
    14. Try
    15. For Each datei As String In System.IO.Directory.GetFiles(strPfad, "*.jpg", IO.SearchOption.AllDirectories)
    16. Me.ListBox1.Items.Add(datei)
    17. Next
    18. Catch
    19. End Try
    20. Next
    21. End If
    22. End Sub

    Im Grunde genommen funktioniert dieser Code.
    Aber ich bin mir sicher, dass man diesen optimieren kann.
    Freue mich auf Hilfe!
    BIG THX

    edit:
    Wenn ich im Laufwerk C:\ Suche, dauert es Jahre. Wie kann man dies beschleunigen? ?(
    Visual Basic.NET 8o
    MS-SQL
    8o

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

    1. Rekursion wäre das Stichwort, um eine Maximaltiefe festzulegen und Redundanz zu vermeiden. Siehe auch hier.
    2. Auch wenn es nur Kommentare sind: "Ohne Verzeichnise". "Mit Verzeichnise". Das erinnert mich an eine Werbung bei netto für deren Kundenkarten: ohne Punkte - mit Punkte. "Ohne" erfordert hier Akkusativ => ohne Verzeichnisse. (Doppel-S als Fehler zusätzlich ausgebessert). "Mit" erfordert den Dativ => mit Verzeichnissen.
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.
    Naja ich hab dir geschrieben wie du es verbessern kannst und du hast ignoriert also was willst du jetzt? Verbessern oder nicht?

    Cheffboss schrieb:

    Wenn ich im Laufwerk C:\ Suche, dauert es Jahre.


    Ist beim Windows-Explorer genauso, sind halt tausende von Files und Ordner.

    @Pascalony
    Sorry, ich wollte deinen Beitrag nicht ignorieren.
    Selbstverständlich möchte ich meinen Code verbessern!
    Ich werde morgen, versuchen das Problem zu lösen.
    Wenn man für die Dateisuche kein Strings verwenden soll,
    kann man ein FileInfo nehmen?
    Visual Basic.NET 8o
    MS-SQL
    8o
    @Blackn0va: Hast Du das schon ausprobiert? Denn selbst damit fliegen bei einem manche Exceptions bei den entsprechenden Verzeichnissen um die Ohren, um die man sich kümmern muss. Denn manchmal schreit das System einfach: »Egal, wer Du bist, Du hast hier nichts zu suchen!«
    Dieser Beitrag wurde bereits 5 mal editiert, zuletzt von „VaporiZed“, mal wieder aus Grammatikgründen.

    Aufgrund spontaner Selbsteintrübung sind all meine Glaskugeln beim Hersteller. Lasst mich daher bitte nicht den Spekulatiusbackmodus wechseln.

    Cheffboss schrieb:

    Wenn man für die Dateisuche kein Strings verwenden soll,
    kann man ein FileInfo nehmen?


    Ist doch eins zu eins in dem Link erklärt. Du füllst deine Listbox mit Fileinfos, indem du eine Liste mit FileInfos an deine ListBox bindest.

    Cheffboss schrieb:

    Wie kann man dies beschleunigen?
    indem Du nicht jeden Eintrag einzeln an die GUI hängst, sondern erst alle Einträge in einem Array sammelst und dieses dann per .AddRange(...) oder besser .DataSource = ... zur Anzeige bringst.
    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!