GetDirectories | System Volume Information & Recycle.bin

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

Es gibt 4 Antworten in diesem Thema. Der letzte Beitrag () ist von beress.

    GetDirectories | System Volume Information & Recycle.bin

    Hallo!

    Ich bin im Moment dabei ein Programm zu schreiben, welches Ordnerstrukturen darstellt um Speicherplatz-Fresser einfacher finden zu können.

    Ich benutze eine simple Funktion um Unterordner im selektierten Ordner aufzulisten,
    allerdings stellt es auch die zwei Ordner "System Volume Information" und "Recycle.bin" dar.

    Meine Frage ist, wie ich diese zwei Ordner, ohne direkt nach den Strings suchen zu müssen, aus der Liste ausschließen kann (sodass mein Programm diese zwei nicht auflistet).

    Screenshot:




    Funktion:
    Spoiler anzeigen

    VB.NET-Quellcode

    1. Dim LVItemAs ListViewItem
    2. Dim iconID As Integer = 2
    3. ' .... weiterer Programmcode .... '
    4. For Each Ordner In Directory.GetDirectories(Pfad)
    5. LI = New ListViewItem()
    6. iconID = 1
    7. With LVItem
    8. .ImageIndex = iconID
    9. .Text = Path.GetFileName(Dirs)
    10. .SubItems.Add("Ordner Größe")
    11. End With
    12. ListView1.Items.Add(LVItem)
    13. Next
    14. ' .... weiterer Programmcode .... '

    Bilder
    • TreeStruct.png

      45,93 kB, 787×505, 193 mal angesehen
    Warum willst du die beiden Ordner ausschließen? Wenn du schon ein "Speicher-Fresser-Detektoren-Programm" schreibst, kannst du doch auch alle Ordner anzeigen lassen und dann mit Checkboxen abfragen, ob der User "hidden" - also mit "Versteckt" markierte Ordner anzeigen lassen will oder nicht

    VB.NET-Quellcode

    1. If My.Computer.FileSystem.GetFileInfo("fads").Attributes <> IO.FileAttributes.Hidden Then


    Mfg Radinator
    In general (across programming languages), a pointer is a number that represents a physical location in memory. A nullpointer is (almost always) one that points to 0, and is widely recognized as "not pointing to anything". Since systems have different amounts of supported memory, it doesn't always take the same number of bytes to hold that number, so we call a "native size integer" one that can hold a pointer on any particular system. - Sam Harwell

    Radinator schrieb:

    Warum willst du die beiden Ordner ausschließen? Wenn du schon ein "Speicher-Fresser-Detektoren-Programm" schreibst, kannst du doch auch alle Ordner anzeigen lassen und dann mit Checkboxen abfragen, ob der User "hidden" - also mit "Versteckt" markierte Ordner anzeigen lassen will oder nicht

    VB.NET-Quellcode

    1. If My.Computer.FileSystem.GetFileInfo("fads").Attributes <> IO.FileAttributes.Hidden Then


    Mfg Radinator



    Weil ich noch nicht ganz hinter die Lösung von diesem Problem gekommen bin und unteranderem sind das 2 Ordner die ich definitiv nicht brauche:



    Edit: Diese Fehlermeldung kommt beim Abfragen der Ordnergröße.
    Am besten du schließt alle Systemdateien aus, diese können ja sowieso nicht gelöscht werden.
    Du findest ganz leicht heraus, ob ein Ordner/eine Datei das System-Flag besitzt, indem du die Attribute abfragst: msdn.microsoft.com/de-de/libra…attributes(v=vs.110).aspx
    Code funktioniert nun.


    Lösungsansatz:

    VB.NET-Quellcode

    1. For Each Ordner In Directory.GetDirectories(Pfad)
    2. Dim FI As New System.IO.FileInfo(Ordner)
    3. If Not (FI.Attributes And FileAttribute.Hidden) = FileAttributes.Hidden Then
    4. ' Was passieren soll wenn es kein Systemordner ist ...
    5. End If
    6. Next