簡體   English   中英

從罐子中加載文件夾

[英]load a folder from a jar

我正在嘗試訪問我的jar文件中的目錄。 我想瀏覽目錄本身內的每個文件。 我嘗試使用以下內容:

File[] files = new File("ressources").listFiles();
        for (File file : files) {
            XMLParser parser = new XMLParser(file.getAbsolutePath());
            // some work
        } 

如果我對此進行測試,則效果很好。 但是,一旦將內容物放入廣口瓶中,並不是有幾個原因。 如果使用此代碼,則URL始終指向罐子外部。

我的項目結構:

src 
   controllers
   models
         class that containt traitement
   views
ressources

看到這個:

如何在JAR文件中列出文件?

基本上,您只是使用ZipInputStream查找文件列表(.jar與.zip相同)

一旦知道文件的名稱,就可以使用getClass()。getResource(String path)獲取文件的URL。

我認為這個jar在您的類路徑中。

您可以使用ClassLoader列出目錄中的所有文件。

首先,您可以獲取文件名列表,然后可以從ClassLoader獲取單個文件的URL

public static void main(String[] args) throws Exception {
    final String base = "/path/to/folder/inside/jar";
    final List<URL> urls = new LinkedList<>();
    try (final Scanner s = new Scanner(MyClass.class.getResourceAsStream(base))) {
        while (s.hasNext()) {
            urls.add(MyClass.class.getResource(base + "/" + s.nextLine()));
        }
    }
    System.out.println(urls);
}

您可以使用URL進行任何操作-將InputStream讀取並輸入到內存中,或者將InputStream復制到硬盤上的File

請注意,這絕對適用於默認的URLClassLoader ,如果您使用的是applet或自定義的ClassLoader則此方法可能不起作用。

注意:

您有錯別字-它的resources不是ressources

您應該為項目使用反向域名表示法 ,這是約定。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM