我有一个 jar 文件,其中包含两个文件夹,每个文件夹都有一堆文件(可能还有根目录中的一些其他文件):
myjar.jar
> sub1
> file1.txt
> file2.txt
> file3.txt
> ...
> sub2
> file1.txt
> file2.txt
> file3.txt
> ...
> otherfile.txt
我有另一个依赖于 myjar.jar 的项目,其中包含一个需要读取所有资源/文本文件并将每个资源转换为字符串的应用程序。因此我想做
URL url = this.class.getClassLoader().getResource("sub1");
// Somehow iterate all sub urls and convert to string
这样做有什么好的建议吗?一种方法可能是:
String scheme = url.getProtocol();
if (!"jar".equals(scheme)) {
// Hm who if we simply want to run from the workspace???
throw new IllegalArgumentException("Unsupported scheme: " + scheme);
}
JarURLConnection con = (JarURLConnection) url.openConnection();
JarFile archive = con.getJarFile();
Enumeration<JarEntry> entries = archive.entries();
while (entries.hasMoreElements()) {
JarEntry entry = entries.nextElement();
if (entry.getName().startsWith(folder)) {
System.out.println(entry.getName());
}
}
但我想避免这种低级代码。