[英]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.