Java jar包中资源的最后修改时间

3
我需要获取Java资源的最后修改时间。当我使用时。
url.openConnection().getLastModified()

它返回整个JAR文件的最后修改时间(所有项目均相同),但我需要特定文件的修改时间。信息在那里(当我将JAR文件作为ZIP打开时,我可以看到特定文件的正确时间)。有人知道如何访问它吗?谢谢。

1
可能是重复的问题:Java:维护压缩文件的修改日期 - Peter Lawrey
尝试一下,看看它是否适用于您。 - Farhan Syed
2个回答

1

您可能需要使用JarInputStream查询JAR内容。
您将遍历条目,并获取ZipEntry对象。
ZipEntry的访问器方法之一是getTime
我相信这就是您要寻找的方法。


0

尝试类似这样的东西:

try (FileSystems jarFS = FileSystems.newFileSystem(URI.create("jar:" + jarURI), Collections.<String, Object>emptyMap())){
    Path resourcePath = jarFS.getPath(resourcePathString); 
    FileTime fileTime = Files.getLastModifiedTime(resourcePath);
}

我还编写了一些实用方法,使用NIO文件API来处理Jar文件:

http://softsmithy.sourceforge.net/lib/0.2/docs/api/softsmithy-lib-core/org/softsmithy/lib/nio/file/JarFiles.html

这个库是开源的。

Maven:

<dependency>  
    <groupId>org.softsmithy.lib</groupId>  
    <artifactId>softsmithy-lib-core</artifactId>  
    <version>0.2</version>   
</dependency> 

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接