none
Dateidatum (explorerdatum) auslesen

    Frage

  • Hallo, ich weis ich habe schon nen anderen Beitrag zu dem Thema, wollte es aber etwas splitten, da es nicht ganz um das andere Problem geht.

    angenommen ich kopiere eine datei im windows von ordner a nach b, dann habe ich in der fileinfo dieser "neuen" datei das aktuelle datum.

    ich möchte aber das datum, welches im explorer unter dem detail datum steht (also das ursprungsdatum vor dem kopiern). wie bekomme ich dieses heraus?

    bzw. wie komme ich generell an das datum, welches im explorer steht?


    • Bearbeitet Bensen83 Sonntag, 11. November 2012 10:44
    Sonntag, 11. November 2012 10:42

Antworten

  • Mal ganz ausführlich zum nachvollziehen, wie ich das gemacht habe. Ich erstellte gestern eine Datei (test.txt). Laut Explorer hat die ihr Erstelldatum am 10.11.2012 um 13:53 und das Änderungsdatum ist eine Minute Später. Nun Kopiere ich die Datei im Explorer (test - Kopie.txt) Diese hat Ihr erstelldatum am 11.11.2012 um 17:28 und das Änderungasdatum ist der 10.11.2012 um 13:54.

    Nun erstelle ich von Beiden Dateien ein FileInfo Objekt:

                FileInfo fi1 = new FileInfo("C:\\test.txt");
                FileInfo fi2 = new FileInfo("C:\\test - Kopie.txt");
                Console.WriteLine("Datei 1 wurde am " + fi1.CreationTime + " erstellt");
                Console.WriteLine("Datei 2 wurde am " + fi2.CreationTime + " erstellt");
                Console.WriteLine("Datei 1 wurde am " + fi1.LastWriteTime + " geändert");
                Console.WriteLine("Datei 2 wurde am " + fi2.LastWriteTime + " geändert");

    Und das kommt heraus:

    Die "alte" Zeit ist also die Zeit der letzten änderung der Datei.


    Koopakiller - http://koopakiller.ko.ohost.de/

    Sonntag, 11. November 2012 16:54
  • Hallo,

    vier Diskussionen wegen eines Datums sind nun langsam etwas viel des Guten.

    NTFS verwaltet nunmal mehrere zeiten und der Unterschied besteht in CreationTime vs LastWriteTime, wie es auch KK Beispiel oben deutlich zeigt.

    Zum Ausgangsthread - wo eigentlich alles schon stand - sei nur noch angemerkt:

    Ein Dateidatum wird nunmal nicht direkt bei der Datei selbst gespeichert, sondern in den Metadaten des Dateisystems.
    Und kann sich deswegen ändern wenn die Datei kopiert oder mit einem Programm bearbeitet wird uvm.
    Darüber eine Zuordnung zu bilden, wird immer fehleranfällig sein.

    Wenn Du Bilder von Digital-Kameras zuordnen willst, so wäre es sinnvoller, die Daten aus den EXIF Informationen auszulesen, die digitalen Kameras heute den Bildern beifügen. Siehe dazu z. B.: http://www.bobpowell.net/discoverproperties.htm

    Gruß Elmar

    Sonntag, 11. November 2012 21:28

Alle Antworten

  • Hallo, wenn ich eine Datei mit File.Copy kopiere, dann haben diese das selbe Änderungs- und Erstelldatum. Es ist schließlich auch nur eine exakte Kopie der alten Datei. Um sicher zu gehen probiere mal folgenden Code aus:
                File.Copy("C:\\test.txt", "C:\\test3.txt", true);
                File.SetCreationTime("C:\\test3.txt", File.GetCreationTime("C:\\test.txt"));
    Dabei wird die CreationTime der neuen Datei auf die der alten gesetzt.

    Koopakiller - http://koopakiller.ko.ohost.de/

    Sonntag, 11. November 2012 11:21
  • Ich meinte ja, wenn der kopiervorgang in Windows Explorer getätigt wird. Nicht im Programm. Wenn ich dann die Datei einlese, dann stimmt die Creationtime nicht.
    Sonntag, 11. November 2012 16:24
  • Hallo, ich nehme an das du den unter Änderungsdatum eingetragenen Wert meinst. Diesen kann man mittels FileInfo heraus bekommen:

                FileInfo fi = new FileInfo("C:\\test - Kopie.txt");
                DateTime dt = fi.LastWriteTime;

    Windows unterscheidet zwischen 3 Zeiten bei Dateien:

    1. Erstellzeit/Datum (fi.CreationTime)
    2. Zugriffszeit/Datum (fi.LastAccessTime)
    3. Änderungszeit/Datum (fi.LastWriteTime)

    Die CreationTime scheint nicht zu stimmen, weil der Widnows Explorer "mitdenkt" und die Erstellzeit/Datum auf das aktuelle setzt und nicht das alte übernimmt.


    Koopakiller - http://koopakiller.ko.ohost.de/

    Sonntag, 11. November 2012 16:33
  • Im Explorer steht aber die alte zeit. Wie komm ich da ran?
    Sonntag, 11. November 2012 16:45
  • Mal ganz ausführlich zum nachvollziehen, wie ich das gemacht habe. Ich erstellte gestern eine Datei (test.txt). Laut Explorer hat die ihr Erstelldatum am 10.11.2012 um 13:53 und das Änderungsdatum ist eine Minute Später. Nun Kopiere ich die Datei im Explorer (test - Kopie.txt) Diese hat Ihr erstelldatum am 11.11.2012 um 17:28 und das Änderungasdatum ist der 10.11.2012 um 13:54.

    Nun erstelle ich von Beiden Dateien ein FileInfo Objekt:

                FileInfo fi1 = new FileInfo("C:\\test.txt");
                FileInfo fi2 = new FileInfo("C:\\test - Kopie.txt");
                Console.WriteLine("Datei 1 wurde am " + fi1.CreationTime + " erstellt");
                Console.WriteLine("Datei 2 wurde am " + fi2.CreationTime + " erstellt");
                Console.WriteLine("Datei 1 wurde am " + fi1.LastWriteTime + " geändert");
                Console.WriteLine("Datei 2 wurde am " + fi2.LastWriteTime + " geändert");

    Und das kommt heraus:

    Die "alte" Zeit ist also die Zeit der letzten änderung der Datei.


    Koopakiller - http://koopakiller.ko.ohost.de/

    Sonntag, 11. November 2012 16:54
  • alles schön und gut, aber bei mir im explorer steht nach dem kopieren immer noch der alte wert. nur im c# steht die creation time auf der kopierzeit. möchte aber die wirkliche erstellungszeit
    Sonntag, 11. November 2012 17:44
  • Hallo,

    vier Diskussionen wegen eines Datums sind nun langsam etwas viel des Guten.

    NTFS verwaltet nunmal mehrere zeiten und der Unterschied besteht in CreationTime vs LastWriteTime, wie es auch KK Beispiel oben deutlich zeigt.

    Zum Ausgangsthread - wo eigentlich alles schon stand - sei nur noch angemerkt:

    Ein Dateidatum wird nunmal nicht direkt bei der Datei selbst gespeichert, sondern in den Metadaten des Dateisystems.
    Und kann sich deswegen ändern wenn die Datei kopiert oder mit einem Programm bearbeitet wird uvm.
    Darüber eine Zuordnung zu bilden, wird immer fehleranfällig sein.

    Wenn Du Bilder von Digital-Kameras zuordnen willst, so wäre es sinnvoller, die Daten aus den EXIF Informationen auszulesen, die digitalen Kameras heute den Bildern beifügen. Siehe dazu z. B.: http://www.bobpowell.net/discoverproperties.htm

    Gruß Elmar

    Sonntag, 11. November 2012 21:28
  • Hallo Bensen83,

    Ich gehe davon aus, dass die Antworten Dir weitergeholfen haben.
    Solltest Du noch "Rückfragen" dazu haben, so gib uns bitte Bescheid.

    Grüße,
    Robert


    Robert Breitenhofer, MICROSOFT   Bitte haben Sie Verständnis dafür, dass im Rahmen dieses Forums, welches auf dem Community-Prinzip Entwickler helfen Entwickler“ beruht, kein technischer Support geleistet werden kann oder sonst welche garantierten Maßnahmen seitens Microsoft zugesichert werden können.

    Mittwoch, 21. November 2012 11:23