【Java】 lastModifiedでファイルの最終更新日時を取得する!

ファイルの最終更新日時を取得するにはFileクラスのlastModifiedメソッドを使用します。

FileクラスのlastModifiedメソッドはファイルの最後に変更されたタイムスタンプを取得するメソッドとなります。
このメソッドは返り値として時間経過をミリ秒(long値)で返します。

そのため、DateクラスやSimpleDateFormatSimpleDateFormatクラスで人間が見やすい形式に変更する必要があります。

今回はFileクラスのlastModifiedメソッドを使って以下の場合でファイルの最終更新日時を取得していきます。

⚫︎ 更新日時を取得する対象のファイルが存在する場合
⚫︎ 更新日時を取得する対象のファイルが存在しない場合
⚫︎ Dateクラスを使って更新日時を取得する場合

また、FilesクラスのgetLastModifiedTimeメソッドを使ってファイルの最終更新日時を取得する方法についても紹介していきます。

lastModifiedメソッドとは

FileクラスのlastModifiedメソッドは>ファイルの最後に変更されたタイムスタンプを取得するメソッドとなります。

lastModifiedメソッドの書き方

FileクラスのlastModifiedメソッドlastModifiedメソッドの構文は下記となります。

まず、Fileクラスのメソッドを使用できるようにFileクラスをインポートします。

lastModifiedの前にファイルを指定し、メソッドを呼び出すことでメソッドの前に指定したファイルの最終更新日をlong型で取得します。

ファイルの最終更新日時を取得するサンプルコード

ファイルの最終更新日時を取得するサンプルコードを紹介します。

「C:¥study」のディレクトリ内に「lastModifiedFile.txt」を用意します。

対象のファイルが存在する場合

Main.java

出力結果

最終更新日時:1599791531504

Main.javaを実行するとlastModifiedメソッドによってlastModifiedFile.txtの最終更新日時をミリ秒で取得しています。

対象のファイルが存在しない場合

Main.java

出力結果

最終更新日時: 0

Main.javaを実行すると、対象のファイルが存在しないことからLong型の「0」を返します。

Dateクラスでファイルの最終更新日時を取得する場合

lastModifiedメソッドをそのまま使用すると経過時間をミリ秒で返すためいつ更新されたのか分かりにくいです。
しかし、Dateクラスでファイルの最終更新日時を取得することで人間にとって分かりやすい形式に変更することができます。

「C:¥study」のディレクトリ内に「lastModifiedFile.txt」を用意します。

対象のファイルが存在する場合

Main.java

出力結果

最終更新日時(Dateクラス):Fri Sep 11 11:33:01 JST 2020

Main.javaを実行すると、Dateクラスによって分かりやすい日付の形式に変換しています。

対象のファイルが存在しない場合

Main.java

出力結果

最終更新日時(Dateクラス):Thu Jan 01 00:00:00 UTC 1970

Main.javaを実行すると、Dateクラスによってデフォルトの「1970年1月1午前0時」に変換しています。

NIO.2(Filesクラス)でファイルの最終更新日時を取得する場合

NIO.2(Filesクラス)でファイル/ディレクトリを移動するにはFilesクラスのgetLastModifiedTimeメソッドを使用します。

NIO.2とはJava7で導入された「java.nio.file」パッケージとそのサブパッケージとを合わせたものであり、NIO.2のFilesクラスを使用することでとても簡単にファイル処理を行うことができます。

そのため、FilesクラスのgetLastModifiedTimeメソッドを使用することで、ファイルの最終更新日時を取得することができます。

しかし、返り値はlong型ではなく「FileTime」のインスタンスになり、対象となるファイルが存在しない場合は例外が発生します。

「C:¥study」のディレクトリ内に「lastModifiedFile.txt」を用意します。

対象のファイルが存在する場合

Main.java

出力結果

最終更新日時:Thu Jun 13 20:35:89 JST 2020

対象のファイルが存在しない場合

Main.java

出力結果

Exception in thread “main” java.nio.file.NoSuchFileException: c:/study/noObjectFile.txt

今回のポイント

lastModifiedでファイルの最終更新日時を取得

ファイルの最終更新日時を取得するにはFileクラスのlastModifiedメソッドを使用する

⚫︎ FileクラスのlastModifiedメソッドでファイルの最終更新日時を取得する

⚫︎ lastModifiedメソッドの前に対象のファイルを指定し、メソッドを呼び出すことで対象のファイルの最終更新日時を1970年1月1午前0時からの経過ミリ秒数で取得する

⚫︎ 存在しないファイルを指定した場合、lastModifiedメソッドはlong型の「0」を返す

⚫︎ DateクラスのインスタンスにlastModifiedメソッドを使用すると分かりやすい形式で最終更新日時を取得することができる

⚫︎ Filesクラスでファイルのサイズを取得するにはgetLastModifiedTimeメソッドを使用する

関連記事

現在日時を取得するDateクラスついてはこちらをご参考ください。

Writer
壷井

壷井

株式会社flyhawkの壷井です。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。

最新の案件情報

フリーランスエンジニアの案件探し