我想在类路径中列出所有具有特定名称的文件。我期待多次出现,因此Class.getResource(String)
将不起作用。
基本上,我必须在类路径中的任何位置识别所有具有特定名称(例如:xyz.properties)的文件,然后累积读取其中的元数据。
我想要一些效果Collection<URL> Class.getResources(String)
,但找不到类似的东西。
PS:我没有使用任何第三方库的奢侈,因此需要一个本土解决方案。
我想在类路径中列出所有具有特定名称的文件。我期待多次出现,因此Class.getResource(String)
将不起作用。
基本上,我必须在类路径中的任何位置识别所有具有特定名称(例如:xyz.properties)的文件,然后累积读取其中的元数据。
我想要一些效果Collection<URL> Class.getResources(String)
,但找不到类似的东西。
PS:我没有使用任何第三方库的奢侈,因此需要一个本土解决方案。
您可以在类加载器上使用Enumeration getResources(String name)来实现相同的目的。
例如:
Enumeration<URL> enumer = Thread.currentThread().getContextClassLoader().getResources("/Path/To/xyz.properties");
while (enumer.hasMoreElements()) {
System.out.print(enumer.nextElement());
}
我所做的是从类路径中读取 java 源文件并使用ClassLoader处理它们。我正在使用以下代码:
ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
assert (classLoader != null);
// pkgName = "com.comp.pkg"
String path = pkgName.replace('.', '/');
// resources will contain all java files and sub-packages
Enumeration<URL> resources = classLoader.getResources(path);
if(resources.hasMoreElements()) {
URL resource = resources.nextElement();
File directory = new File(resource.getFile());
// .. process file, check this directory for properties files
}
希望这对您有所帮助。