フォルダ(ディレクトリ)のタイムスタンプ(作成日時、更新日時、アクセス日時)を取得するには、DirectoryクラスのGetCreationTime、GetLastWriteTime、GetLastAccessTimeメソッドを使います。また、設定は、SetCreationTime、SetLastWriteTime、SetLastAccessTimeメソッドを使います。
以下の例では、フォルダ"C:\TEST"のタイムスタンプを取得し、また、タイムスタンプを現在の時間に設定しています。
'作成日時の取得(DateTime値で返される) '"C:\TEST"が存在しないときは、1601/01/01 9:00:00 を返す Console.WriteLine(System.IO.Directory.GetCreationTime("C:\TEST")) '更新日時の取得 Console.WriteLine(System.IO.Directory.GetLastWriteTime("C:\TEST")) 'アクセス日時の取得 Console.WriteLine(System.IO.Directory.GetLastAccessTime("C:\TEST")) '作成日時の設定(現在の時間にする) System.IO.Directory.SetCreationTime("C:\TEST", DateTime.Now) '更新日時の設定 System.IO.Directory.SetLastWriteTime("C:\TEST", DateTime.Now) 'アクセス日時の設定 System.IO.Directory.SetLastAccessTime("C:\TEST", DateTime.Now)
//作成日時の取得(DateTime値で返される) //"C:\TEST"が存在しないときは、1601/01/01 9:00:00 を返す Console.WriteLine(System.IO.Directory.GetCreationTime(@"C:\TEST")); //更新日時の取得 Console.WriteLine(System.IO.Directory.GetLastWriteTime(@"C:\TEST")); //アクセス日時の取得 Console.WriteLine(System.IO.Directory.GetLastAccessTime(@"C:\TEST")); //作成日時の設定(現在の時間にする) System.IO.Directory.SetCreationTime(@"C:\TEST", DateTime.Now); //更新日時の設定 System.IO.Directory.SetLastWriteTime(@"C:\TEST", DateTime.Now); //アクセス日時の設定 System.IO.Directory.SetLastAccessTime(@"C:\TEST", DateTime.Now);
上記のメソッドはすべてローカル時刻を使用したものになりますが、世界協定時刻を使いたい場合は、これらのメソッド名の末尾に"Utc"を付けたメソッドを使用します(.NET Framework 1.1以降)。
以上のDirectoryクラスのメソッドを表にまとめました。
Directoryのメソッド | 説明 | 注意事項 |
---|---|---|
GetCreationTime | ディレクトリの作成日時を取得する | |
GetCreationTimeUtc | 世界協定時刻(UTC)形式で、ディレクトリの作成日時を取得する | .NET Framework 1.1以降。 |
GetLastAccessTime | ディレクトリの最終アクセス日時を取得する | |
GetLastAccessTimeUtc | 世界協定時刻(UTC)形式で、ディレクトリの最終アクセス日時を取得する | .NET Framework 1.1以降。 |
GetLastWriteTime | ディレクトリの最終更新日時を取得する | |
GetLastWriteTimeUtc | 世界協定時刻(UTC)形式で、ディレクトリの最終更新日時を取得する | .NET Framework 1.1以降。 |
SetCreationTime | ディレクトリの作成日時を設定する | |
SetCreationTimeUtc | 世界協定時刻(UTC)形式で、ディレクトリの作成日時を設定する | .NET Framework 1.1以降。 |
SetLastAccessTime | ディレクトリの最終アクセス日時を設定する | |
SetLastAccessTimeUtc | 世界協定時刻(UTC)形式で、ディレクトリの最終アクセス日時を設定する | .NET Framework 1.1以降。 |
SetLastWriteTime | ディレクトリの最終更新日時を設定する | |
SetLastWriteTimeUtc | 世界協定時刻(UTC)形式で、ディレクトリの最終更新日時を設定する | .NET Framework 1.1以降。 |
DirectoryInfoクラスを使用する場合は、CreationTime、LastWriteTime、LastAccessTimeを使用します。なおこれらのプロパティにも世界協定時刻版として、末尾に"Utc"が付いたプロパティが存在します(.NET Framework 1.1以降)。
DirectoryInfoクラスは、フォルダ情報を返すプロパティ(Attributes、LastWriteTimeなど)が最初に呼び出されたときにキャッシュを作成し、2回目以降の呼び出しではキャッシュされた情報を返すため、最新の情報を取得するためには、その前にRefreshメソッドを呼び出してキャッシュを最新にしておく必要があります。
以下の例では、フォルダ"C:\TEST"のタイムスタンプを取得し、また、タイムスタンプを現在の時間に設定しています。
'DirectoryInfoオブジェクトを作成する Dim di As System.IO.DirectoryInfo = New System.IO.DirectoryInfo("C:\TEST") '作成日時の取得(DateTime値で返される) Console.WriteLine(di.CreationTime) '更新日時の取得 Console.WriteLine(di.LastWriteTime) 'アクセス日時の取得 Console.WriteLine(di.LastAccessTime) '作成日時の設定(現在の時間にする) di.CreationTime = DateTime.Now '更新日時の設定 di.LastWriteTime = DateTime.Now 'アクセス日時の設定 di.LastAccessTime = DateTime.Now
//DirectoryInfoオブジェクトを作成する System.IO.DirectoryInfo di = new System.IO.DirectoryInfo(@"C:\TEST"); //作成日時の取得(DateTime値で返される) Console.WriteLine(di.CreationTime); //更新日時の取得 Console.WriteLine(di.LastWriteTime); //アクセス日時の取得 Console.WriteLine(di.LastAccessTime); //作成日時の設定(現在の時間にする) di.CreationTime = DateTime.Now; //更新日時の設定 di.LastWriteTime = DateTime.Now; //アクセス日時の設定 di.LastAccessTime = DateTime.Now;