Как получить время последней модификации ресурса Java?

Потому что в вызове метода аргумент this всегда (в неаккуратном режиме) передается объекту. То, что вы видите, - это объект String, который был получен из примитивного строкового значения "test". Массив, на котором вы называете свой метод, уже является объектом, поэтому ничего не происходит, и вы просто получаете массив по-прежнему.

Если вы используете строгий режим, это приведение не происходит:

String.prototype.test = function() {
    "use strict";
    console.log(this);
};
var str = 'test';
str.test(); // logs "test"
13
задан Aaron Digulla 14 January 2010 в 00:36
поделиться

3 ответа

, Если вы с "ресурсом" имеете в виду что-то достижимое через Class#getResource или ClassLoader#getResource, можно получить последнюю измененную метку времени через URLConnection:

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

знать, что getLastModified () возвращается 0, если в последний раз измененный неизвестно, который, к сожалению, невозможно отличить от реальной метки времени, читающей "1-го января 1970, 0:00 UTC".

17
ответ дан 1 December 2019 в 20:29
поделиться

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());
}
5
ответ дан 1 December 2019 в 20:29
поделиться

Проблема с url.openConnection (). GetLastModified () заключается в том, что getLastModified () в FileURLConnection создает InputStream для этого файла. Таким образом, вы должны вызвать urlConnection.getInputStream (). Close () после получения даты последнего изменения. Напротив, JarURLConnection создает входной поток при вызове getInputStream ().

5
ответ дан 1 December 2019 в 20:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: