DOBON.NET

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

Directoryクラスを使用する方法

フォルダ(ディレクトリ)のタイムスタンプ(作成日時、更新日時、アクセス日時)を取得するには、DirectoryクラスのGetCreationTime、GetLastWriteTime、GetLastAccessTimeメソッドを使います。また、設定は、SetCreationTime、SetLastWriteTime、SetLastAccessTimeメソッドを使います。

以下の例では、フォルダ"C:\TEST"のタイムスタンプを取得し、また、タイムスタンプを現在の時間に設定しています。

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

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

DirectoryInfoクラスは、フォルダ情報を返すプロパティ(Attributes、LastWriteTimeなど)が最初に呼び出されたときにキャッシュを作成し、2回目以降の呼び出しではキャッシュされた情報を返すため、最新の情報を取得するためには、その前にRefreshメソッドを呼び出してキャッシュを最新にしておく必要があります。

以下の例では、フォルダ"C:\TEST"のタイムスタンプを取得し、また、タイムスタンプを現在の時間に設定しています。

VB.NET
コードを隠すコードを選択
'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
C#
コードを隠すコードを選択
//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;

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

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

この記事への評価

この記事へのコメント

この記事に関するコメントを投稿するには、下のボタンをクリックしてください。投稿フォームへ移動します。通常のご質問、ご意見等は掲示板へご投稿ください。