Java从类路径目录中获取资源列表
我正在寻找一种从给定的classpath
目录中获取所有资源名称的列表的方法,例如method List<String> getResourceNames (String directoryName)
。
例如,给定一个路径目录x/y/z包含文件a.html,b.html,c.html
和子目录d
,getResourceNames("x/y/z")
应该返回一个List<String>
包含下列字符串:['a.html'
, 'b.html', 'c.html', 'd']
。
它应同时适用于文件系统和jar中的资源。
我知道我可以用Files,JarFiles
和URLs
编写一个简短的代码段,但是我不想重新发明轮子。我的问题是,鉴于现有的公共可用库,最快的实现方法是getResourceNames
什么?Spring
和Apache Commons
堆栈都是可行的。
回答:
实施自己的扫描仪。例如:
private List<String> getResourceFiles(String path) throws IOException { List<String> filenames = new ArrayList<>();
try (
InputStream in = getResourceAsStream(path);
BufferedReader br = new BufferedReader(new InputStreamReader(in))) {
String resource;
while ((resource = br.readLine()) != null) {
filenames.add(resource);
}
}
return filenames;
}
private InputStream getResourceAsStream(String resource) {
final InputStream in
= getContextClassLoader().getResourceAsStream(resource);
return in == null ? getClass().getResourceAsStream(resource) : in;
}
private ClassLoader getContextClassLoader() {
return Thread.currentThread().getContextClassLoader();
}
以上是 Java从类路径目录中获取资源列表 的全部内容, 来源链接: utcz.com/qa/408871.html