【Java】 lastModifiedでファイルの最終更新日時を取得する!
ファイルの最終更新日時を取得するにはFileクラスのlastModifiedメソッドを使用します。
FileクラスのlastModifiedメソッドはファイルの最後に変更されたタイムスタンプを取得するメソッドとなります。
このメソッドは返り値として時間経過をミリ秒(long値)で返します。
そのため、DateクラスやSimpleDateFormatSimpleDateFormatクラスで人間が見やすい形式に変更する必要があります。
今回はFileクラスのlastModifiedメソッドを使って以下の場合でファイルの最終更新日時を取得していきます。
⚫︎ 更新日時を取得する対象のファイルが存在する場合
⚫︎ 更新日時を取得する対象のファイルが存在しない場合
⚫︎ Dateクラスを使って更新日時を取得する場合
また、FilesクラスのgetLastModifiedTimeメソッドを使ってファイルの最終更新日時を取得する方法についても紹介していきます。
目次
lastModifiedメソッドとは
FileクラスのlastModifiedメソッドは>ファイルの最後に変更されたタイムスタンプを取得するメソッドとなります。
lastModifiedメソッドの書き方
FileクラスのlastModifiedメソッドlastModifiedメソッドの構文は下記となります。
1 2 3 |
import java.io.File; file.lastModified(); |
まず、Fileクラスのメソッドを使用できるようにFileクラスをインポートします。
lastModifiedの前にファイルを指定し、メソッドを呼び出すことでメソッドの前に指定したファイルの最終更新日をlong型で取得します。
ファイルの最終更新日時を取得するサンプルコード
ファイルの最終更新日時を取得するサンプルコードを紹介します。
「C:¥study」のディレクトリ内に「lastModifiedFile.txt」を用意します。
対象のファイルが存在する場合
Main.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
// ファイルの最終更新日を取得する import java.io.File; import java.util.Date; public class Main { public static void main(String[] args) throws Exception { // 最終更新日を取得するファイル File file1 = new File("c:/study/lastModifiedFile.txt"); // 最終更新日を取得する System.out.println("最終更新日時: " + file1.lastModified()); } } |
出力結果
最終更新日時:1599791531504
Main.javaを実行するとlastModifiedメソッドによってlastModifiedFile.txtの最終更新日時をミリ秒で取得しています。
対象のファイルが存在しない場合
Main.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
// ファイルの最終更新日を取得する import java.io.File; import java.util.Date; public class Main { public static void main(String[] args) throws Exception { // 最終更新日を取得するファイル File file2 = new File("c:/study/lastModifiedFile.txt"); // 最終更新日を取得する System.out.println("最終更新日時: " + file2.lastModified()); } } |
出力結果
最終更新日時: 0
Main.javaを実行すると、対象のファイルが存在しないことからLong型の「0」を返します。
Dateクラスでファイルの最終更新日時を取得する場合
lastModifiedメソッドをそのまま使用すると経過時間をミリ秒で返すためいつ更新されたのか分かりにくいです。
しかし、Dateクラスでファイルの最終更新日時を取得することで人間にとって分かりやすい形式に変更することができます。
「C:¥study」のディレクトリ内に「lastModifiedFile.txt」を用意します。
対象のファイルが存在する場合
Main.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
// ファイルの最終更新日を取得する import java.io.File; import java.util.Date; public class Main { public static void main(String[] args) throws Exception { // 最終更新日を取得するファイル File file1 = new File("c:/study/lastModifiedFile.txt"); // 最終更新日を取得する(Dateクラス) Date lastDate = new Date(file1.lastModified()); // 最終更新日を表示する System.out.println("最終更新日時(Dateクラス):" + lastDate); } } |
出力結果
最終更新日時(Dateクラス):Fri Sep 11 11:33:01 JST 2020
Main.javaを実行すると、Dateクラスによって分かりやすい日付の形式に変換しています。
対象のファイルが存在しない場合
Main.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
// ファイルの最終更新日を取得する import java.io.File; import java.util.Date; public class Main { public static void main(String[] args) throws Exception { // 最終更新日を取得するファイル File file2 = new File("c:/study/lastModifiedFile.txt"); // 最終更新日を取得する(Dateクラス) Date lastDate = new Date(file1.lastModified()); // 最終更新日を表示する System.out.println("最終更新日時(Dateクラス):" + lastDate); } } |
出力結果
最終更新日時(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
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
// Filesクラスでファイルのサイズを取得する import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.attribute.FileTime; public class Main { public static void main(String[] args) throws Exception { // 最終更新日を取得するファイル Path path1 = Paths.get("c:/study/lastModifiedFile.txt"); // 最終更新日を取得する FileTime fTime = Files.getLastModifiedTime(path1); // 最終更新日を表示する System.out.println("最終更新日時:" + fTime); } } |
出力結果
最終更新日時:Thu Jun 13 20:35:89 JST 2020
対象のファイルが存在しない場合
Main.java
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
// Filesクラスでファイルのサイズを取得する import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.Paths; import java.nio.file.attribute.FileTime; public class Main { public static void main(String[] args) throws Exception { // 最終更新日を取得するファイル Path path2 = Paths.get("c:/study/noObjectFile.txt"); // 最終更新日を取得する FileTime fTime = Files.getLastModifiedTime(path2); // 最終更新日を表示する System.out.println("最終更新日時:" + fTime); } } |
出力結果
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クラスついてはこちらをご参考ください。
ST
株式会社flyhawkのSTです。フライテックメディア事業部でのメディア運営・ライター業務なども担当。愛機はMac Book AirとThinkPad。好きな言語:swift、JS系(Node.js等)。好きなサーバー:AWS。受託開発やプログラミングスクールの運営をしております。ご気軽にお問い合わせください。