目标是列出指定文件夹中的所有.properties文件名,然后对其执行某些操作。第一部分是我遇到的问题,因为这些文件夹具有相同的名称。
eclipse 中的 MAVEN 项目具有以下结构:
SubProject_A
|-src
|-main
|-resources
|-someFolder //folder name is the same as in Subproject_B
|-someResourceBundle.properties
|-someResourceBundle.properties
SubProject_B
|-src
|-main
|-resources
|-someFolder //folder name is the same as in Subproject_A
|-someResourceBundle.properties
|-someResourceBundle.properties
每当我调用(listAllResourceFilesInFolder() - 见下文)时,将列出Subproject_A文件夹中的文件。我不知道如何在Subproject_B中指定同名文件夹?是否有可能只有subproject_A中的文件夹在类路径上(或者至少在第一次出现)。我怎样才能最优雅地解决这个问题?
仅传递文件夹名称作为参数。有没有办法指定完整路径,例如 / Subproject_A / src / main / resources / someFolder
listAllResourceFilesInFolder("someFolder")
方法列出文件夹
中的所有可用资源文件名private static Set<String> listAllResourceFilesInFolder(String folderName) throws IOException {
Set<String> filenames = new HashSet<>();
try (
InputStream in = getResourceAsStream(folderName);
BufferedReader br = new BufferedReader(new InputStreamReader(in))) {
String resource;
while ((resource = br.readLine()) != null) {
filenames.add(resource);
}
}
return filenames;
}
private static InputStream getResourceAsStream(String resource) {
final InputStream in = getContextClassLoader().getResourceAsStream(resource);
return in == null ? thisClass.class.getResourceAsStream(resource) : in;
}
private static ClassLoader getContextClassLoader() {
return Thread.currentThread().getContextClassLoader();
}