簡體   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