从特定JAR文件中读取资源(文件的重复路径)

时间:2018-02-20 19:16:16

标签: java maven jar

假设你有一个带有artifactId动物园的jar1,带有artifactId动物的jar2。两个jar都有一个具有相同路径的资源文件(例如:/animals/animal.txt)。有没有办法从特定的jar读取该文件?使用getResourcesAsStream也会返回第一个jar,但有时我想要第二个jar的animal.txt文件。

1 个答案:

答案 0 :(得分:0)

正如@MadProgrammer建议的那样,ClassLoader.getResources()将返回网址,其类似于jar:file:/C:/dir/animals.jar!/animals/animal.txt

所以这种摘录应该能够选择正确的文件:

    Enumeration<URL> urls = getClass().getClassLoader().getResources("/animals/animal.txt");
    while (urls.hasMoreElements()) {
        URL url = urls.nextElement();
        if (url.toExternalForm().contains("animals.jar!")) {
            System.out.println(url);
            url.openStream()...
        }
    }