この記事は会員限定です。会員登録(無料)すると全てご覧いただけます。
Windowsのすべてのファイルには、「作成日時」「更新日時」「最終アクセス日時」という3つの日時に関する情報(「タイムスタンプ」と呼ばれる)が、ファイル属性として設定されている。これらのタイムスタンプ情報は、ファイルのプロパティで参照できる(具体的にはエクスプローラなどで、ファイルのアイコンを右クリックしてコンテキスト・メニューを開き、そこから[プロパティ]を選択する)。
次の画面は、実際にファイルのプロパティでタイムスタンプを確認しているところだ。
本稿では、プログラムでファイルおよびディレクトリのタイムスタンプを取得/設定する方法について解説する。
.NETのプログラムからファイルのタイムスタンプを取得したり、設定したりするには、Fileクラス(System.IO名前空間)の静的メソッドである以下のメソッドを使えばよい。
取得メソッドでは、パラメータにファイルのパスを文字列で指定する。戻り値としてDateTime型のオブジェクト(=日時情報)が返される。
設定メソッドでは、第1パラメータにファイル・パスの文字列を、第2パラメータにDateTime型のオブジェクトを設定する。戻り値はない。
ディレクトリのタイムスタンプも同じようにして設定できるが、ファイルの場合と異なるのは使用するクラスがDirectoryクラス(System.IO名前空間)になることである。メソッドのシグネチャは、以下のとおりまったく同じだ。
Fileクラスのメソッドはすべて静的メソッドのため、同じファイルに対して「作成」「コピー」「削除」「移動」「開く」などの操作を繰り返し行うようなケースでは効率が悪い。このためクラス・ライブラリには、特定のファイルを指定してインスタンスを作成し、操作できるFileInfoクラス(System.IO名前空間)が用意されている。
このFileInfoクラスを使用すれば、以下のプロパティを利用してファイルのタイムスタンプを取得/設定できる。
いずれのプロパティもDateTime型である。なおFileInfoクラスはFileSystemInfoクラス(System.IO名前空間)の派生クラスであり、上記のプロパティ群は実際には基本クラスのFileSystemInfoクラスで実装されている。
ディレクトリについても、FileInfoクラスの場合と同じように、DirectoryInfoクラス(System.IO名前空間)が用意されている。DirectoryInfoクラスもFileSystemInfoクラスの派生クラスであるため、上記のFileInfoクラスとまったく同じ「CreationTimeプロパティ」「LastWriteTimeプロパティ」「LastAccessTimeプロパティ」が使用できる。
Copyright© Digital Advantage Corp. All Rights Reserved.