ファイルやディレクトリのタイムスタンプを取得/設定するには?.NET TIPS

» 2005年10月28日 05時00分 公開
[一色政彦デジタルアドバンテージ]

この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。

「.NET TIPS」のインデックス

連載目次

 Windowsのすべてのファイルには、「作成日時」「更新日時」「最終アクセス日時」という3つの日時に関する情報(「タイムスタンプ」と呼ばれる)が、ファイル属性として設定されている。これらのタイムスタンプ情報は、ファイルのプロパティで参照できる(具体的にはエクスプローラなどで、ファイルのアイコンを右クリックしてコンテキスト・メニューを開き、そこから[プロパティ]を選択する)。

 次の画面は、実際にファイルのプロパティでタイムスタンプを確認しているところだ。

ファイルのタイムスタンプの参照方法
ファイルのタイムスタンプを参照するには、エクスプローラなどでファイルのアイコンを右クリックしてコンテキスト・メニューを開き、そこから[プロパティ]を選択して、ファイルのプロパティ・ダイアログを表示すればよい。

 本稿では、プログラムでファイルおよびディレクトリのタイムスタンプを取得/設定する方法について解説する。

ファイルのタイムスタンプの取得と設定

 .NETのプログラムからファイルのタイムスタンプを取得したり、設定したりするには、Fileクラス(System.IO名前空間)の静的メソッドである以下のメソッドを使えばよい。

  • 【取得】作成日時:GetCreationTimeメソッド
  • 【取得】更新日時:GetLastWriteTimeメソッド
  • 【取得】最終アクセス日時:GetLastAccessTimeメソッド
  • 【設定】作成日時:SetCreationTimeメソッド
  • 【設定】更新日時:SetLastWriteTimeメソッド
  • 【設定】最終アクセス日時:SetLastAccessTimeメソッド

 取得メソッドでは、パラメータにファイルのパスを文字列で指定する。戻り値としてDateTime型のオブジェクト(=日時情報)が返される。

 設定メソッドでは、第1パラメータにファイル・パスの文字列を、第2パラメータにDateTime型のオブジェクトを設定する。戻り値はない。

ディレクトリのタイムスタンプの取得と設定

 ディレクトリのタイムスタンプも同じようにして設定できるが、ファイルの場合と異なるのは使用するクラスがDirectoryクラス(System.IO名前空間)になることである。メソッドのシグネチャは、以下のとおりまったく同じだ。

  • 【取得】作成日時:GetCreationTimeメソッド
  • 【取得】更新日時: GetLastWriteTimeメソッド
  • 【取得】最終アクセス日時:GetLastAccessTimeメソッド
  • 【設定】作成日時:SetCreationTimeメソッド
  • 【設定】更新日時:SetLastWriteTimeメソッド
  • 【設定】最終アクセス日時:SetLastAccessTimeメソッド

ファイルのタイムスタンプの取得と設定(第2の方法)

 Fileクラスのメソッドはすべて静的メソッドのため、同じファイルに対して「作成」「コピー」「削除」「移動」「開く」などの操作を繰り返し行うようなケースでは効率が悪い。このためクラス・ライブラリには、特定のファイルを指定してインスタンスを作成し、操作できるFileInfoクラス(System.IO名前空間)が用意されている。

 このFileInfoクラスを使用すれば、以下のプロパティを利用してファイルのタイムスタンプを取得/設定できる。

  • 【取得/設定】作成日時:CreationTimeプロパティ
  • 【取得/設定】更新日時:LastWriteTimeプロパティ
  • 【取得/設定】最終アクセス日時:LastAccessTimeプロパティ

 いずれのプロパティもDateTime型である。なおFileInfoクラスはFileSystemInfoクラス(System.IO名前空間)の派生クラスであり、上記のプロパティ群は実際には基本クラスのFileSystemInfoクラスで実装されている。

ディレクトリのタイムスタンプの取得と設定(第2の方法)

 ディレクトリについても、FileInfoクラスの場合と同じように、DirectoryInfoクラス(System.IO名前空間)が用意されている。DirectoryInfoクラスもFileSystemInfoクラスの派生クラスであるため、上記のFileInfoクラスとまったく同じ「CreationTimeプロパティ」「LastWriteTimeプロパティ」「LastAccessTimeプロパティ」が使用できる。

タイムスタンプのサンプル・プログラム

Copyright© Digital Advantage Corp. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。