Alle Dateien aller Partitionen auflisten

  • VB.NET
  • .NET (FX) 4.5–4.8

Es gibt 5 Antworten in diesem Thema. Der letzte Beitrag () ist von Coder9292.

    Alle Dateien aller Partitionen auflisten

    Hallo liebe Community,

    Ich möchte alle Dateien (auf allen Partitionen) auslesen und anschließend in einer Listbox mit Pfad ausgeben lassen.
    Mein Problem: Wenn der Zugriff auf ein Verzeichnis "verboten" ist dann komm ich nicht weiter:/

    Mein Code:
    Festplatten auslesen:

    VB.NET-Quellcode

    1. For Each festplatte As IO.DriveInfo In IO.DriveInfo.GetDrives
    2. If festplatte.IsReady = True Then
    3. lbFestplatten.Items.Add(festplatte)
    4. End If
    5. Next


    Nach Dateien suchen:

    VB.NET-Quellcode

    1. Dim count As Integer = lbFestplatten.Items.Count
    2. Dim i As Integer = 0
    3. Do Until i = count
    4. For Each File In My.Computer.FileSystem.GetFiles(lbFestplatten.Items.Item(i).ToString, FileIO.SearchOption.SearchAllSubDirectories, "*.*")
    5. rtbFiles.Text += & vbnewline & File.ToString
    6. Next
    7. i += 1
    8. Loop​


    Ich hoffe ihr könnt mir helfen :)

    Mfg
    Coder9292
    ~Programmieren Sie immer so, als wäre der Typ, der den Code pflegen muss, ein gewaltbereiter Psychopath, der weiß, wo Sie wohnen. ~

    Grüße
    Coder9292
    Heyho,

    ich würde das ganze in nen Try-Catch packen und "UnauthorizedAccessException" abfangen.
    Weiß nicht ob es da bessere Möglichkeiten gibt.(Falls ja bitte erwähnen ^^ )

    C#-Quellcode

    1. try
    2. {
    3. }
    4. catch (UnauthorizedAccessException)
    5. {
    6. }


    Grüße
    Grüße , xChRoNiKx

    Nützliche Links:
    Visual Studio Empfohlene Einstellungen | Try-Catch heißes Eisen
    @xChRoNiKx Also wenn ich den Code zum Dateien suchen in die try abfrage packe, dann fängt er die Fehler zwar ab aber er geht nicht weiter. Der fehler kommt dann einfach die ganze Zeit :/ Die Lösung wäre ja, dass "die Suche" dann einfach die Datei bzw das Verzeichnis überspringt aber wie mache ich das? ?(
    ~Programmieren Sie immer so, als wäre der Typ, der den Code pflegen muss, ein gewaltbereiter Psychopath, der weiß, wo Sie wohnen. ~

    Grüße
    Coder9292
    Spoiler anzeigen

    C#-Quellcode

    1. public static List<string> GetAllFiles(string path, bool Subfolders)
    2. {
    3. Queue<string> folders = new Queue<string>();
    4. List<string> files = new List<string>();
    5. folders.Enqueue(path);
    6. while (folders.Count != 0)
    7. {
    8. string currentFolder = folders.Dequeue();
    9. try
    10. {
    11. string[] currentfiles = System.IO.Directory.GetFiles(currentFolder, "*.*", System.IO.SearchOption.TopDirectoryOnly);
    12. files.AddRange(currentfiles);
    13. }
    14. catch
    15. {
    16. // nichts machen bzw exceptions die vorkommen können vernünftig abfangen
    17. }
    18. try
    19. {
    20. if (Subfolders)
    21. {
    22. string[] allFoldersInCurrentDir = System.IO.Directory.GetDirectories(currentFolder, "*.*", System.IO.SearchOption.TopDirectoryOnly);
    23. foreach (string _current in allFoldersInCurrentDir)
    24. {
    25. folders.Enqueue(_current);
    26. }
    27. }
    28. }
    29. catch
    30. {
    31. // nichts machen bzw exceptions die vorkommen können vernünftig abfangen
    32. }
    33. }
    34. return files;
    35. }

    Ist C# solltest du aber mitm Converter leicht nach VB.Net bringen können.

    Das benutze ich um alles aufzulisten geht ohne Probleme
    Habe das damals etwas anders mal in Google gefunden und angepasst.
    Wenn er dann noch überspringen soll musst du das ganze noch anpassen eine bool Variable
    ob der Ordner übersprungen werden soll oder nicht kann man gut ins Catch einpflegen und
    dann halt abfragen.Nur das werde ich nicht noch machen ^^
    Dafür gibt es den Marktplatz ODER du zeigst uns deinen Versuch ;)
    Grüße , xChRoNiKx

    Nützliche Links:
    Visual Studio Empfohlene Einstellungen | Try-Catch heißes Eisen
    Kleines Update:
    Ok die Ordner auf die ich keinen Zugriff habe kann ich jetzt schon mal überspringen indem ich bei einem Fehler den currentFolder String "leere".

    *EDIT* Habe es nun geschafft und alles läuft so wie ich es möchte :) Danke an @xChRoNiKx für den Beispiel Code :) Dieser hat mir sehr geholfen
    ~Programmieren Sie immer so, als wäre der Typ, der den Code pflegen muss, ein gewaltbereiter Psychopath, der weiß, wo Sie wohnen. ~

    Grüße
    Coder9292

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