Время последней модификации ресурса Java в банке

Мне нужно получить время последней модификации java-ресурса. Когда я использую

url.openConnection().getLastModified()

он возвращает время последней модификации всей банки (одинаковое для всех элементов внутри), но мне нужно время модификации определенных файлов. Информация есть (когда я открываю банку как zip, я вижу правильное время в конкретных файлах). Кто-нибудь знает, как получить к нему доступ?

Спасибо


person user1835395    schedule 19.11.2012    source источник
comment
возможный дубликат Java: сохранение даты изменения заархивированных файлов   -  person Peter Lawrey    schedule 19.11.2012
comment
[Попробуйте это и посмотрите, сработает ли это для вас. ][1] [1]: stackoverflow.com/questions/1429172/   -  person Farhan Syed    schedule 19.11.2012


Ответы (2)


Вероятно, вам нужно запросить содержимое JAR, используя JarInputStream.
ВЫ будете перебирать записи и получать объекты ZipEntry.
Одним из методов доступа ZipEntry является getTime.
Полагаю, это именно тот метод, который вы ищете.

person Yair Zaslavsky    schedule 19.11.2012

Попробуйте что-то вроде:

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

Я также написал методы утилиты soem для работы с файлами Jar с использованием NIO File API:

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

Библиотека с открытым исходным кодом.

Мейвен:

<dependency>  
    <groupId>org.softsmithy.lib</groupId>  
    <artifactId>softsmithy-lib-core</artifactId>  
    <version>0.2</version>   
</dependency> 
person Puce    schedule 19.11.2012