从jar加载文件夹

时间:2013-12-22 01:53:41

标签: java xml

我正在尝试访问jar文件中的目录。我想浏览目录中的每个文件。我尝试使用以下内容:

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

如果我测试一下,它运作良好。但是,一旦我把内容放入罐子里,它就不会因为几个原因了。如果我使用此代码,则URL始终指向jar外部。

我项目的结构:

src 
   controllers
   models
         class that containt traitement
   views
ressources

2 个答案:

答案 0 :(得分:1)

见:

How do I list the files inside a JAR file?

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

一旦知道了文件的名称,就可以使用getClass()。getResource(String path)来获取文件的URL。

答案 1 :(得分:0)

我认为这个jar在你的类路径上。

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

首先,您可以获取文件名列表,然后您可以从URL获取ClassLoader个别文件:

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,则此方法可能无效。

<强> NB:

你有一个拼写错误 - resources而不是ressources

您应该将reverse domain name notation用于您的项目,这是惯例。