C# Alle Datein und Ordner in einem Ordner auslesen

fLuChTzW3rG

Commander
Registriert
Juli 2003
Beiträge
2.060
Guten Tag,

ich bin grad beim Coden und soll dem Programm noch eine Progressbar hinzufügen. Diese hat einen Start-Minimalwert und einen End bzw. Maximalwert. Das Programm traversiert durch einen angegebenen Order und sucht dort nach Datein.
Wenn ich jetzt zum Beispiel durch C:\ traversieren dann bräuchte ich alle Datein und Ordner die dort liegen, um diese dem Maximalwert zu setze. Doch wie komme ich dort ran. Als einzige Möglichkeit ist mir bis jetzt eine zweite Traverse eingefalle, welche vor der eigentlichen durchläuft, was aber schwachsinnig ist und Performance kosten -.-
Leider gibts auch keine Funktion welche ALLE Unterordner und Datein zurückgibt.
Wäre echt super wenn von euch noch jemand eine Idee hat.

MfG
 
Meiner Meinung nach gibt es keine (außer eben den weniger sinnvollen)...
Merkst du ja auch dass wenn du beim Explorer einen Ordner rechtsklickst und auf Eigenschaften gehst, dass dort auch nicht steht wie lange die Größen-Berechnungen noch dauern werden...
 
du könntest die traversierung auf die ordner beschränken und dir von jedem ordner die darin enthaltenen dateien (aber ohne unterverzeichnisse!!!) zurückgeben lassen.
aber ich denke - wie 1668mib - dass du um eine zweite traversierung nicht herumkommst.
evtl. hilft die die file allocation table des fs weiter (allerdings bräuchtest du dafür wahrscheinlich spez. bibliotheken)
 
das problem ist nicht C# abhängig, sondern ein allgemeines probem. eins habe ich noch nicht ganz verstanden: willst du die größe oder anzahl der unterelemente?

dieses problem ist nur rekursiv zu lösen, da der dateibaum (verzeichnisstruktur) auch ein baum darstellt. leider wird (für dein problem) nicht an jedem knoten eine zwischeninformation gespeichert, wieviele unterelemente insgesamt es gibt, das wäre in den meisten fällen aber auch ineffektiv. (immerhin wird sehr viel öfter geschrieben, als die dateigröße/anzahl abgefragt).

bei den meisten programmen ist auch erkennbar, dass die progressbar nur annäherungsweise richtig funktioniert und meist etwas rechenzeit vorneweg benötigt wird, um sie anständig zu füttern.
(grund allein für eine solche ist nunmal der unwissende&ungeduldige mensch, der nicht weiß, ob noch gearbeitet wird und keine lust hat, eine ungewisse zeit lang zu warten)
 
Zurück
Oben