DOBON.NET プログラミング道: .NET Framework, VB.NET, C#, Visual Basic, Visual Studio, インストーラ, ...

ファイルのタイムスタンプ(作成日時、更新日時、アクセス日時)を取得、設定する

Fileクラスを使用する方法

ファイルのタイムスタンプ(作成日時、更新日時、アクセス日時)を取得、設定するには、Fileクラスを使えば簡単です。

以下に、ファイル"C:\test.txt"のタイムスタンプを取得し、また、タイムスタンプを現在の時間にする例を示します。

VB.NET
コードを隠すコードを選択
'作成日時の取得(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)
C#
コードを隠すコードを選択
//作成日時の取得(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クラスを使用する方法

FileInfoクラスを使用する時は、CreationTime、LastWriteTime、LastAccessTimeプロパティを使用します。なおこれらのプロパティにも世界協定時刻版として、末尾に"Utc"が付いたプロパティが存在します(.NET Framework 1.1以降)。

以下に、ファイル"C:\test.txt"のタイムスタンプを取得し、また、タイムスタンプを現在の時間にする例を示します。

VB.NET
コードを隠すコードを選択
'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
C#
コードを隠すコードを選択
//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メソッドを呼び出します。なおこれらのプロパティに値を設定したときは、キャッシュが削除されます。

注意:この記事では、基本的な事柄の説明が省略されているかもしれません。初心者の方は、特に以下の点にご注意ください。

  • Windows Vista以降でUACが有効になっていると、ファイルへの書き込みに失敗する可能性があります。詳しくは、こちらをご覧ください。
  • .NET Tipsをご利用いただく際は、注意事項をお守りください。