Aar*_*lla 13 java resources last-modified
有人可以告诉我一个可靠的方法来获取Java资源的最后修改时间吗?资源可以是JAR中的文件或条目.
jar*_*bjo 17
如果您使用"资源"表示可通过Class#getResource或ClassLoader#getResource访问的内容,则可以通过URLConnection获取最后修改的时间戳:
URL url = Test.class.getResource("/org/jdom/Attribute.class");
System.out.println(new Date(url.openConnection().getLastModified()));
Run Code Online (Sandbox Code Playgroud)
请注意,如果上次修改未知,则getLastModified()将返回0,遗憾的是,无法区分读取"1970年1月1日,0:00 UTC"的实时时间戳.
Apache Commons VFS提供了与来自不同来源的文件交互的通用方法. FileObject.getContent()返回一个FileContent对象,该对象具有一种用于检索上次修改时间的方法.
以下是VFS网站的修改示例:
import org.apache.commons.vfs.FileSystemManager;
import org.apache.commons.vfs.FileObject;
...
FileSystemManager fsManager = VFS.getManager();
FileObject jarFile = fsManager.resolveFile( "jar:lib/aJarFile.jar" );
System.out.println( jarFile.getName().getBaseName() + " " + jarFile.getContent().getLastModifiedTime() );
// List the children of the Jar file
FileObject[] children = jarFile.getChildren();
System.out.println( "Children of " + jarFile.getName().getURI() );
for ( int i = 0; i < children.length; i++ )
{
System.out.println( children[ i ].getName().getBaseName() + " " + children[ i ].getContent().getLastModifiedTime());
}
Run Code Online (Sandbox Code Playgroud)
问题url.openConnection().getLastModified()是getLastModified()在FileURLConnection上创建一个InputStream到该文件.所以你必须urlConnection.getInputStream().close()在获得最后修改日期后打电话.相比之下,JarURLConnection在调用getInputStream()时创建输入流.
| 归档时间: |
|
| 查看次数: |
10682 次 |
| 最近记录: |