[英]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
看到這個:
基本上,您只是使用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.