hallo, gibts da eine effiziente möglichkeit, welche schon eingebaut ist? oder müsste man das selber machen?
danke
Hallo math55,
je nachdem, was du genau willst, könnte FileSystemWatcher für dich interessant sein. Ansonsten gibt es m.E. nichts fertiges.
herbivore
ich habe ein verzeichnis mit configdateien. da möchte ich die zuletzt angelegte finden und verarbeiten. geht das mit FileSystemWatcher ?
grüße
Hallo math55
nein.
DirectoryInfo.GetFiles und dann selber gucken, welches die jüngste ist.
herbivore
So habe ich es gemacht (aus einem aktuellen Projekt kopiert):
string[] textfileList = Directory.GetFiles(textfilePath, textfileFilter);
if (textfileList.Length > 0) {
DateTime dt = new DateTime(2001,1,1);
DateTime fileLastChange;
string fileLastChanged = "";
foreach(string textfile in textfileList) {
fileLastChange = File.GetLastWriteTime(textfile);
if (fileLastChange > dt) {
dt = fileLastChange;
fileLastChanged = textfile;
}
}
if (fileLastChanged != "") {
LoadText(fileLastChanged);
}
}
Gruß Jürgen
Wieso so kompliziert?
Mittels DirectoryInfo.GetFiles bekommst du direkt ein FileInfo[]. Dort brauchst du dann bloß noch die Zeit abfragen. Das ganze über Strings laufen zu lassen ist sehr kompliziert.
Desweiteren solltest du statt new DateTime(2001,1,1) einfach DateTime.MinValue benutzen.
Allse in allem also so:
public string GetNewestFilesName( string DirectoryName, string FileMask )
{
DateTime newestDate = DateTime.MinValue;
int newestIndex = 0;
FileInfo[] Files = (new DirectoryInfo( DirectoryName )).GetFiles( FileMask );
for ( int i = 0; i < Files.Length; i+ )
{
if (newestDate < Files[i].LastWriteTime)
{
newestDate = Files[i].LastWriteTime;
newestIndex = i;
}
}
return (Files.Length > 0) ? Files[newestIndex].FullName : null;
}
In diesem Zusammenhang hab ich mich grad gefragt, obs aus Performance-Sicht nicht sinnvoller wäre, das Array entsprechend dem Datum zu sortieren... was meint ihr? So wäre ja im schlechtesten Fall O(n), je nach Sortier-Algorithmus wäre dies ja durchaus zu unterbieten.
Nimmt mich nur grad wunder, weil wir gerade darauf in der Schule rumritten... 😁
Hallo Borg,
ich hatte mit Directory.GetFiles() gearbeitet, weil mich sowieso der Dateiname interessiert hatte. Aber Du hast recht: DirectoryInfo und FileInfo[] geben einen "schöneren" Zugriff.
Ebenso danke für den Hinweis auf DateTime.MinValue: Ich war schon so sehr auf ein bestimmtes Anfangsdatum festgelegt, dass ich mich nicht mehr umgestellt hatte. Jürgen
Hallo dani.net,
O(n) beim Sortieren unterbieten zu wollen, scheint mir ein Wunschtraum zu sein. Es ist wirklich das einfachste und schnellte, die Liste durchzugehen und zu gucken, welches das kleinste Element ist.
herbivore
Ntfs führt auch ein Änderungslog, z.B. hier: