繁体   English   中英

给定一个类路径资源,有没有办法获取具有/包含它的java.io.File对象?

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

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM