Dav*_*ann 16 java resources classpath
我知道我们可以这样做:
Class.class.getResourceAsStream("/com/youcompany/yourapp/module/someresource.conf")
Run Code Online (Sandbox Code Playgroud)
读取我们的jar文件中打包的文件.
我已经google了很多,我肯定没有使用正确的条款; 我想要做的是列出可用的资源,如下所示:
Class.class.listResources("/com/yourcompany/yourapp")
Run Code Online (Sandbox Code Playgroud)
这应该返回包内的资源列表 com.yourcompany.yourapp.*
那可能吗?关于如何做到这一点的任何想法,以防它不能像我展示的那样轻松完成?
注意:我知道可以知道罐子的位置,然后打开它并检查其内容以实现它.但是,我不能在我现在工作的环境中这样做.
eri*_*son 10
对于JAR文件中的资源,这样的工作原理:
URL url = MyClass.class.getResource("MyClass.class");
String scheme = url.getProtocol();
if (!"jar".equals(scheme))
throw new IllegalArgumentException("Unsupported scheme: " + scheme);
JarURLConnection con = (JarURLConnection) url.openConnection();
JarFile archive = con.getJarFile();
/* Search for the entries you care about. */
Enumeration<JarEntry> entries = archive.entries();
while (entries.hasMoreElements()) {
JarEntry entry = entries.nextElement();
if (entry.getName().startsWith("com/y/app/")) {
...
}
}
Run Code Online (Sandbox Code Playgroud)
您可以使用文件系统或许多其他存储库中"爆炸"的资源执行相同的操作,但这并不是那么容易.您需要为要支持的每个URL方案指定特定代码.