[英]Given a classpath resource, is there a way to get the java.io.File object that has/contains it?
如果我在類路徑上有資源,則都可以按流的方式很好地加載它,甚至還有它的URL表示。 不幸的是,Url的某些實現未正確實現lastModified。
我想要的是在類路徑中找到某個路徑,然后將其解析為磁盤上的文件-如果在jar中,則指向該jar的File就可以了。 然后,我可以從File對象而不是URL獲取lastModified,這將更加有用。
粗略地說:
URL url = this.getClass().getResource(myResource);
String fileName;
if (url.getProtocol().equals("file")) {
fileName = url.getFile();
} else if (url.getProtocol().equals("jar")) {
JarURLConnection jarUrl = (JarURLConnection) url.openConnection();
fileName = jarUrl.getJarFile().getName();
} else {
throw new IllegalArgumentException("Not a file");
}
File file = new File(fileName);
long lastModified = file.lastModified();
應該做你想做的。 您將需要捕獲IOException。
不能。通常無法完成此操作,因為URL可以代表與文件無關的資源。 例如,可以是HTTP,FTP或JNDI等。
如果協議是基於文件的,則可以檢查協議並自行創建文件,例如“ file:// path”,“ jar:// path!...”。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.