ファイルのタイムスタンプ(作成日時、更新日時、アクセス日時)を取得、設定するには、Fileクラスを使えば簡単です。
以下に、ファイル"C:\test.txt"のタイムスタンプを取得し、また、タイムスタンプを現在の時間にする例を示します。
'作成日時の取得(DateTime値を返す) 'C:\test.txt が存在しないときは、UTCの 1601/01/01 9:00:00 を返す Console.WriteLine(System.IO.File.GetCreationTime("C:\test.txt")) '更新日時の取得 Console.WriteLine(System.IO.File.GetLastWriteTime("C:\test.txt")) 'アクセス日時の取得 Console.WriteLine(System.IO.File.GetLastAccessTime("C:\test.txt")) '作成日時の設定(今の時間にする) System.IO.File.SetCreationTime("C:\test.txt", DateTime.Now) '更新日時の設定 System.IO.File.SetLastWriteTime("C:\test.txt", DateTime.Now) 'アクセス日時の設定 System.IO.File.SetLastAccessTime("C:\test.txt", DateTime.Now)
//作成日時の取得(DateTime値を返す) //C:\test.txt が存在しないときは、UTCの 1601/01/01 9:00:00 を返す Console.WriteLine(System.IO.File.GetCreationTime(@"C:\test.txt")); //更新日時の取得 Console.WriteLine(System.IO.File.GetLastWriteTime(@"C:\test.txt")); //アクセス日時の取得 Console.WriteLine(System.IO.File.GetLastAccessTime(@"C:\test.txt")); //作成日時の設定(今の時間にする) System.IO.File.SetCreationTime(@"C:\test.txt", DateTime.Now); //更新日時の設定 System.IO.File.SetLastWriteTime(@"C:\test.txt", DateTime.Now); //アクセス日時の設定 System.IO.File.SetLastAccessTime(@"C:\test.txt", DateTime.Now);
上記のメソッドはすべてローカル時刻を使用したものになりますが、世界協定時刻を使いたい場合は、これらのメソッド名の末尾に"Utc"を付けたメソッドを使用します(.NET Framework 1.1以降)。
FileInfoクラスを使用する時は、CreationTime、LastWriteTime、LastAccessTimeプロパティを使用します。なおこれらのプロパティにも世界協定時刻版として、末尾に"Utc"が付いたプロパティが存在します(.NET Framework 1.1以降)。
以下に、ファイル"C:\test.txt"のタイムスタンプを取得し、また、タイムスタンプを現在の時間にする例を示します。
'FileInfoオブジェクトを作成 Dim fi As New System.IO.FileInfo("C:\test.txt") '作成日時の取得 Console.WriteLine(fi.CreationTime) '更新日時の取得 Console.WriteLine(fi.LastWriteTime) 'アクセス日時の取得 Console.WriteLine(fi.LastAccessTime) '作成日時の設定 fi.CreationTime = DateTime.Now '更新日時の設定 fi.LastWriteTime = DateTime.Now 'アクセス日時の設定 fi.LastAccessTime = DateTime.Now
//FileInfoオブジェクトを作成 System.IO.FileInfo fi = new System.IO.FileInfo(@"C:\test.txt"); //作成日時の取得 Console.WriteLine(fi.CreationTime); //更新日時の取得 Console.WriteLine(fi.LastWriteTime); //アクセス日時の取得 Console.WriteLine(fi.LastAccessTime); //作成日時の設定 fi.CreationTime = DateTime.Now; //更新日時の設定 fi.LastWriteTime = DateTime.Now; //アクセス日時の設定 fi.LastAccessTime = DateTime.Now;
補足:FileInfoクラスは、ファイル情報を返すプロパティ(Attributes、LastWriteTimeなど)から最初に値を取得したときにキャッシュを作成し、2回目以降に値を取得するときはキャッシュされた情報を返します。よってこれらのプロパティは、現在の情報ではなく、古い情報を返す可能性があります。最新の情報を取得するためにキャッシュを最新にするには、Refreshメソッドを呼び出します。なおこれらのプロパティに値を設定したときは、キャッシュが削除されます。