Datei-Zeitstempel auslesen und setzen

Veröffentlicht: 04. Sep 2003 | Aktualisiert: 11. Nov 2004

Von Mathias Schiffer

Dieser MSDN Quickie zeigt Ihnen, wie Sie unter Visual Basic .NET die Zeitstempel einer Datei oder eines Verzeichnisses auslesen und abändern können.

Im MSDN Quickie "Datei-Zeitstempel auslesen und modifizieren" haben Sie erfahren, wie Sie unter Visual Basic 6.0 die Zeitstempel einer Datei bzw. eines Verzeichnisses für die Zeitpunkte der Erzeugung, letzten Änderung und des letzten Zugriffs auslesen und verändern können.

Dieser MSDN Quickie zeigt Ihnen, wie das gleiche Ziel dank des .NET Frameworks unter Visual Basic .NET mit deutlich weniger Aufwand erreicht werden kann.

Im Namespace System.IO des .NET Frameworks finden Sie unter anderen die statischen Klassen File und Directory. Diese stellen mit ihren Funktionen GetCreationTime, GetLastWriteTime und GetLastAccessTime die Möglichkeit zur Verfügung, die gesuchten Zeitstempel auslesen zu können - mehr als den Pfad zur betroffenen Datei müssen Sie dafür nicht übergeben:

' Imports System.IO 
' ... 
' Variable für die Zeitstempel bereitstellen 
Dim DateCreated As Date ' Zeitstempel der Erzeugung 
Dim DateModified As Date   ' Zeitstempel der letzten Änderung 
Dim DateLastAccessed As Date  ' Zeitstempel des letzten Zugriffs 
' Ermittlung der Zeitstempel einer Datei 
DateCreated = File.GetCreationTime("javascript:void(null);") 
DateModified = File.GetLastWriteTime("javascript:void(null);") 
DateLastAccessed = File.GetLastAccessTime("javascript:void(null);") 
' Ausgabe der Ergebnisse: 
Debug.WriteLine("Zeitstempel für die Datei c:\test.doc:") 
Debug.WriteLine("Erzeugt:   " & DateCreated.ToString) 
Debug.WriteLine("Geändert:  " & DateModified.ToString) 
Debug.WriteLine("Letzter Zugriff: " & DateLastAccessed.ToString)

Auch das Setzen der entsprechenden Zeitstempel ist mit Hilfe von System.IO nicht mehr als ein Klacks: Die Methoden SetCreationTime, SetLastWriteTime und SetLastAccessTime erledigen dies für Sie:

' Beispielhaftes Vorgehen für das Setzen von 
' Zeitstempel für Dateien: 
File.SetCreationTime("javascript:void(null);", DateCreated) 
File.SetLastWriteTime("javascript:void(null);", DateModified) 
File.SetLastAccessTime("javascript:void(null);", DateLastAccessed)

Das Vorgehen für Verzeichnisse stellt sich absolut analog dar. Der einzige Unterschied ist der, dass hier die Klasse Directory des Namespace System.IO verwendet wird:

' Imports System.IO 
' ... 
' Variable für die Zeitstempel bereitstellen 
Dim DateCreated As Date ' Zeitstempel der Erzeugung 
Dim DateModified As Date   ' Zeitstempel der letzten Änderung 
Dim DateLastAccessed As Date  ' Zeitstempel des letzten Zugriffs 
' Ermittlung der Zeitstempel eines Verzeichnisses 
DateCreated = Directory.GetCreationTime("javascript:void(null);") 
DateModified = Directory.GetLastWriteTime("javascript:void(null);") 
DateLastAccessed = Directory.GetLastAccessTime("javascript:void(null);") 
' Ausgabe der Ergebnisse: 
Debug.WriteLine("Zeitstempel für das Verzeichnis c:\test:") 
Debug.WriteLine("Erzeugt:   " & DateCreated.ToString) 
Debug.WriteLine("Geändert:  " & DateModified.ToString) 
Debug.WriteLine("Letzter Zugriff: " & DateLastAccessed.ToString) 
' Beispielhaftes Vorgehen für das Setzen von 
' Zeitstempel für Dateien: 
Directory.SetCreationTime("javascript:void(null);", DateCreated) 
Directory.SetLastWriteTime("javascript:void(null);", DateModified) 
Directory.SetLastAccessTime("javascript:void(null);", DateLastAccessed)