如何获取 Java 资源的上次修改时间?

2022-09-03 09:46:13

有人可以告诉我一个可靠的方法来获取Java资源的上次修改时间吗?资源可以是文件或 JAR 中的条目。


答案 1

如果你的“resource”表示可以通过Class#getResource或ClassLoader#getResource访问的东西,你可以通过URLConnection获取上次修改的时间戳:

URL url = Test.class.getResource("/org/jdom/Attribute.class");
System.out.println(new Date(url.openConnection().getLastModified()));

请注意,如果上次修改时间未知,getLastModified() 将返回 0,不幸的是,无法将其与读取“1970 年 1 月 1 日 0:00 UTC”的真实时间戳区分开来。


答案 2

问题在于,在 FileURLConnection 上会为该文件创建一个 InputStream。因此,您必须在获取上次修改日期后调用。相比之下,JarURLConnection 在调用 getInputStream() 时创建输入流。url.openConnection().getLastModified()getLastModified()urlConnection.getInputStream().close()


推荐