我正在寻找一种从给定的classpath目录中获取所有资源名称的列表的方法,例如method List<String> getResourceNames (String directoryName)
。
例如,给定一个路径目录x/y/z
包含文件a.html,b.html,c.html
和子目录d,getResourceNames("x/y/z")
应该返回一个List
['a.html', 'b.html', 'c.html', 'd']
。
它应该同时适用于文件系统和jar中的资源。
我知道我可以用Files,JarFiles和URLs编写一个简短的代码段,但是我不想重新发明轮子。我的问题是,鉴于现有的公共可用库,最快的实现方法是getResourceNames什么?Spring和Apache Commons堆栈都是可行的。
Custom Scanner
实施自己的扫描仪。例如:
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();
}
Spring Framework
PathMatchingResourcePatternResolver从Spring Framework使用。
Ronmamo Reflections
对于巨大的CLASSPATH值,其他技术在运行时可能很慢。更快的解决方案是使用ronmamo的Reflections API,该API在编译时对搜索进行预编译。
问题内容: 我正在寻找一种从给定的目录中获取所有资源名称的列表的方法,例如。 例如,给定一个路径目录x/y/z包含文件和子目录,应该返回一个包含下列字符串:, 。 它应同时适用于文件系统和jar中的资源。 我知道我可以用和 编写一个简短的代码段,但是我不想重新发明轮子。我的问题是,鉴于现有的公共可用库,最快的实现方法是什么?和堆栈都是可行的。 问题答案: 自定义扫描仪 实施自己的扫描仪。例如:
问题内容: 我有一个颜色清单 (我从别人问的另一个问题中取出了此列表) 我要做的是获取所有颜色名称。我需要列表,以便随后可以在微调器中填充该列表。伪代码将像这样。 我想要的是颜色列表。我希望这可以为所有帮助加油打气 问题答案: 您可以使用反射来访问颜色列表:
问题内容: 我正在使用以下方法从WildFly中的WAR文件获取资源: 当应用程序作为爆炸式WAR部署时,它可以工作。 它也曾经 与压缩的WAR一起 使用 。昨天,我在Eclipse中进行了项目的干净和重建,但它刚刚停止工作。 当我检查资源根目录时: 我得到这个: 因此,难怪它不起作用。它可能与JBoss模块加载有关,但是我不知道这是错误还是正常行为。 我在StackOverflow上发现了各种类
如果文件位置是资源文件夹,下面的代码工作正常,但是当文件位置在项目目录之外时,比如(c:\file.json),它就失败了。我们如何从项目目录之外加载文件。
什么是ClassPath 简单说来ClassPath就是查找class文件的路径,在Tomcat等容器下,ClassPath一般是WEB-INF/classes,在普通java程序中,我们可以通过定义-cp或者-classpath参数来定义查找class文件的路径,这些路径就是ClassPath。 为了项目方便,我们定义的配置文件肯定不能使用绝对路径,所以需要使用相对路径,这时候最好的办法就是把配
我有以下数据: 获取密钥列表的最佳方法是什么(好像它是一个dict而不是一个数组)?目前我正在做: 但这感觉有点老土