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