C# Alle Dateien in einem Verzeichnis durchlaufen

El_Ko

Cadet 4th Year
Registriert
Apr. 2013
Beiträge
114
Hallo,
Ich wollte euch mal fragen ob ihr wisst wie ich alle Dateien in einem Verzeichniss durchlaufen kann und ihr Alter abfragen kann?
Ich komm soweit dass ich ne foreach schleife brauche, mein problem ist, dass ich nix finde wie ich an die eigenschaften der Files komme.
Ich brauche das Ganze um nache her ihren Dateityp abzufragen und die Dateien dann in einen Ordner zu stecken sodass ich sie wieder finde (Hierbei handelt es sich um den Downloadordner) Das Programm sollte dann so alle 10-20 min mal drüberlaufen und alles Ignoieren was nicht älter al 24h ist (die Zeit wird Variabel).
Ich hofffe ihr könnt mir helfen.
MfG
Felix
 
Mit
Code:
var allFiles = Directory.EnumerateFiles("PathToFolder");
erhälst du alle Dateien in einem Ordner.
Und über FileInfo bekommst du Infos über eine Datei:
Code:
FileInfo fi = new FileInfo("Filename");
fi.LastAccessTime //Letzter Zugriff (gibts auch als UTC)
fi.LastWriteTime //Letzter Schreibzugriff (gibts auch als UTC)
 
Danke an alle die hier geschrieben haben,
der Zusammenhang ist eigntlich ganz einfach, ich hatte aber vergessen, dass es die FileInfo-Klasse gibt....:lol:
ich habe das ganze jezt so gelöst:
Code:
string[] files = Directory.GetFiles(dPfad);
            string type;
            int i = 0;
            TimeSpan ts = new TimeSpan(1,0,0);

            foreach(string path in files)
            {
                
                FileInfo fi = new FileInfo(files[i]);
                i++;
                if ((DateTime.Now - fi.LastAccessTime) > ts)
                {
                    type = fi.Extension;
//hier gehts weiter wird aber zu lang...
Jezt laufen die Dateitype durch einen Switch und der ist momentan 320 Zeilen lang... wenn jemand interressiert ist stell ich den Code online wenn ich Fertig bin
MfG
Felix
 
Wenn du bereits ein foreach verwendest, dann kannst du bei FileInfo auch gleich auf das Item zugreifen:
Code:
// statt FileInfo fi = new FileInfo(files[i]);
FileInfo fi = new FileInfo(path);
Oder du verwendest eine for-Schleife, dann brauchst du nicht extra die Laufvariable i weiterzählen.

Wenn du nur gewissen Dateitypen brauchst, kannst du diese auch bei Directory.GetFiles() mit angeben. Das könnte dir Arbeit beim ausfiltern ersparen.
 
Wenn du nur gewissen Dateitypen brauchst, kannst du diese auch bei Directory.GetFiles() mit angeben. Das könnte dir Arbeit beim ausfiltern ersparen.
ok, das mit i sind 2 Zeilen... an denen wirts nicht scheitrern, aber im moment überspringt das Programm anweisungen wie z-B das Schreiben von Text in eine .txt,
der StreamWriter wird Deklariert und Initialisiert, aber dann ist das progrann plötzlich wieder in der Hauptfunktion...
Kann man bei einen Forms Fenster zusätzlich eine Konsole öffnen?:freak:
 
Nein, nur wenn du ein zweites (Startup-)Projekt erstellst was parallel gestartet wird und mit deiner Form kommuniziert.

Mach es einfach richtig und verwende Breakpoints und debugge den Code somit ordentlich.

Ansonsten bleibt dir auch noch die Möglichkeit Debug.WriteLine oder richtige Logging-Frameworks zu verwenden.
 
Wenn die Breakpoints übersprungen werden, wird der betreffende Code gar nicht erst erreicht. Setzte den Breakpoint früher.
 
Zurück
Oben