1. 概要

JDK 7では、ファイルの作成日を取得する機能が導入されました。

このチュートリアルでは、 java.nioを介してアクセスする方法を学習します。

2. Files.getAttribute

ファイルの作成日を取得する1つの方法は、メソッド Files.getAttributeを指定されたPathで使用することです。

try {
    FileTime creationTime = (FileTime) Files.getAttribute(path, "creationTime");
} catch (IOException ex) {
    // handle exception
}

creationTimeのタイプはFileTimeですが、メソッドがObjectを返すため、をキャストする必要があります。

FileTime は、日付値をタイムスタンプ属性として保持します。 たとえば、 toInstant()メソッドを使用してInstantに変換できます。

ファイルシステムがファイルの作成日を保存しない場合、メソッドはnullを返します。

3. Files.readAttributes

作成日を取得する別の方法は、 Files.readAttributesを使用することです。これは、特定のパスに対して、ファイルのすべての基本属性を一度に返します。

try {
    BasicFileAttributes attr = Files.readAttributes(path, BasicFileAttributes.class);
    FileTime fileTime = attr.creationTime();
} catch (IOException ex) {
    // handle exception
}

このメソッドはBasicFileAttributes、を返します。これを使用して、ファイルの基本属性を取得できます。 メソッドcreationTime()は、ファイルの作成日をFileTimeとして返します。

今回、ファイルシステムがファイルの作成日を保存していない場合、メソッドは最終変更日を返します。 最終変更日も保存されていない場合は、エポック(01.01.1970)が返されます。

4. 結論

このチュートリアルでは、Javaでファイルの作成日を決定する方法を学びました。 具体的には、Files.getAttributeおよびFiles.readAttributesでそれを実行できることを学びました。

いつものように、例のコードはGitHubから入手できます。