Willkommen auf myCSharp.de! Anmelden | kostenlos registrieren
 | Suche | FAQ

Hauptmenü
myCSharp.de
» Startseite
» Forum
» Suche
» Regeln
» Wie poste ich richtig?

Mitglieder
» Liste / Suche
» Wer ist online?

Ressourcen
» FAQ
» Artikel
» C#-Snippets
» Jobbörse
» Microsoft Docs

Team
» Kontakt
» Cookies
» Spenden
» Datenschutz
» Impressum

  • »
  • Community
  • |
  • Diskussionsforum
Neueste Datei aus einem Verzeichnis holen?
math55
myCSharp.de - Member

Avatar #avatar-2253.png


Dabei seit:
Beiträge: 314
Herkunft: Deutschland

Themenstarter:

Neueste Datei aus einem Verzeichnis holen?

beantworten | zitieren | melden

hallo, gibts da eine effiziente möglichkeit, welche schon eingebaut ist? oder müsste man das selber machen?

danke
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

Hallo math55,

je nachdem, was du genau willst, könnte FileSystemWatcher für dich interessant sein. Ansonsten gibt es m.E. nichts fertiges.

herbivore
private Nachricht | Beiträge des Benutzers
math55
myCSharp.de - Member

Avatar #avatar-2253.png


Dabei seit:
Beiträge: 314
Herkunft: Deutschland

Themenstarter:

beantworten | zitieren | melden

ich habe ein verzeichnis mit configdateien. da möchte ich die zuletzt angelegte finden und verarbeiten. geht das mit FileSystemWatcher ?

grüße
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

Hallo math55

nein.

DirectoryInfo.GetFiles und dann selber gucken, welches die jüngste ist.

herbivore
private Nachricht | Beiträge des Benutzers
juetho
myCSharp.de - Member



Dabei seit:
Beiträge: 3.331
Herkunft: Berlin

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Borg
myCSharp.de - Member



Dabei seit:
Beiträge: 1.529
Herkunft: Berlin, Germany

beantworten | zitieren | melden

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;
}
private Nachricht | Beiträge des Benutzers
dani.net
myCSharp.de - Member

Avatar #avatar-2269.gif


Dabei seit:
Beiträge: 175
Herkunft: Wil SG / Schweiz

beantworten | zitieren | melden

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...
private Nachricht | Beiträge des Benutzers
juetho
myCSharp.de - Member



Dabei seit:
Beiträge: 3.331
Herkunft: Berlin

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
herbivore
myCSharp.de - Experte

Avatar #avatar-2627.gif


Dabei seit:
Beiträge: 49.486
Herkunft: Berlin

beantworten | zitieren | melden

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
private Nachricht | Beiträge des Benutzers
Coder007
myCSharp.de - Member



Dabei seit:
Beiträge: 1.214

beantworten | zitieren | melden

Ntfs führt auch ein Änderungslog, z.B. hier:

http://www.microsoft.com/msj/0999/journal/journal.aspx
private Nachricht | Beiträge des Benutzers