Entwickler-Ecke
C# - Die Sprache - Dateidatum auslesen
TheSoul - Mi 03.02.10 09:43
Titel: Dateidatum auslesen
Hallo!
Ich hab überall gesucht, aber ich hab nirgendwo eine verständliche Anleitung für c# gefunden.
Ich brauche das Änderungsdatum von Dateien. Dateien sollen im Programm nur geladen werden, wenn sie neuer als die bereits geladene Datei ist. Aber wie kann man im C# herausfinden, wann eine Datei zum letzten Mal geändert wurde?
Mein bisheriger Testversuch ist gescheitert:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| private void button2_Click(object sender, EventArgs e) { FileInfo Test = new FileInfo(@"C:\xml\Konfig.xml"); FileInfo Test2 = new FileInfo(@"C:\cml\test.xml"); if (Test.LastAccessTime.Minute > Test2.LastAccessTime.Minute) { MessageBox.Show("konfig.xml ist neuer");
} else { MessageBox.Show("test.xml ist grösser"); } } |
JüTho - Mi 03.02.10 10:16
Hallo,
da kommt zunächst mein Standardvorschlag: in der
SDK-Doku/MSDN/Hilfe unter
"Klasse - Alle Member" nachlesen, was es denn so gibt. Dann stolperst du bei
FileInfo schnell über die folgende Eigenschaft:
Zitat: |
Ruft den Zeitpunkt des letzten Schreibzugriffs auf die aktuelle Datei oder das aktuelle Verzeichnis ab ... |
Zusätzlich machst du noch den Fehler, dass du nur die Minuten-Angabe vergleichst. Es handelt sich um einen
DateTime-Wert, der insgesamt verglichen werden muss.
Gruß Jürgen
TheSoul - Mi 03.02.10 10:30
Wie kann ich es als ganzes nehmen? Funktioniert der Vergleich wirklich nur mit den grösser/ kleienr als zeichen?
JüTho - Mi 03.02.10 11:33
TheSoul hat folgendes geschrieben : |
Wie kann ich es als ganzes nehmen? Funktioniert der Vergleich wirklich nur mit den grösser/ kleienr als zeichen? |
Nein, nicht nur. Es geht auch mit
DateTime.Compare oder
DateTime.CompareTo. Aber ich gebe dir recht: Es steht nirgends geschrieben, dass es auch
einfach mit > bzw. < geht.
Gruß Jürgen
TheSoul - Mi 03.02.10 11:52
Danke für deine Hilfe Jürgen
Mein letzter Stand:
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| private void button2_Click(object sender, EventArgs e) { FileInfo Test = new FileInfo(@"C:\xml\Konfig.xml"); FileInfo Test2 = new FileInfo(@"C:\cml\test.xml"); if (Test2.LastWriteTime.CompareTo(Test.LastWriteTime) == -1) { MessageBox.Show("konfig.xml ist neuer"); } else { MessageBox.Show("test.xml ist neuer"); }
} |
funktioniert leider immernoch nicht... :(
danielf - Mi 03.02.10 12:01
Was funktioniert den nicht?
TheSoul - Mi 03.02.10 12:05
Es kommt, unabhängi vom Änderungsdatum, immer die gleiche Meldung "konfig.xml" ist neuer.
danielf - Mi 03.02.10 12:18
C#-Quelltext
1: 2: 3: 4:
| FileInfo file1 = new FileInfo(@"C:\test1.txt"); FileInfo file2 = new FileInfo(@"C:\test2.txt");
Console.WriteLine(file1.LastWriteTime.CompareTo(file2.LastWriteTime)); |
Funktioniert einwandfrei bei mir.
Ausgabe 1: file1 ist neuer.
Ausagbe 0: Letzter Schreibzugriff war zur gleichen Zeit.
Ausgabe -1: file1 ist älter.
Ich denke dein Test ist falsch!
TheSoul - Mi 03.02.10 12:25
C#-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9: 10: 11: 12: 13: 14:
| private void button2_Click(object sender, EventArgs e) { FileInfo Test = new FileInfo(@"C:\xml\Konfig.xml"); FileInfo Test2 = new FileInfo(@"C:\xml\test.xml"); if (Test2.LastWriteTime.CompareTo(Test.LastWriteTime) == -1) { MessageBox.Show("konfig.xml ist neuer"); } else { MessageBox.Show("test.xml ist neuer"); }
} |
Es war ein kleiner Rechtschreibefehler. Danke für die Hilfe
danielf - Mi 03.02.10 12:34
Aber was anderes... ich würde eine Routine schreiben, die die Konfiguration an sich vergleicht.. nicht das letzte Schreibdatum. Dies könnte ja unter umständen verschieden sein.. die Konfiguration aber gleich.
Damit hättest du nämlich dann auch eine Methode die es dir erlaubt beim Beenden der Anwendung oder des KonfigurationsForm zu überprüfen ob der Benutzer was geändert hat und ihn dementsprechend fragen ob er die Änderungen übernehmen will etc.
Aber vlt. lautet dein Auftrag ja wieder genau: Überprüfe den letzten Schreibzugriff ;)
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!