例如需要获取环境变量ANDROID_HOME所代表文件夹目录树下adb.exe文件的路径,用到文件名过滤器FilenameFilter
代码如下:
private String filterWantedFile(File dir, String fileName) {
File[] files = dir.listFiles();
for (File file : files) {
File[] listFiles = file.listFiles(new FilenameFilter() {
@Override
public boolean accept(File dir, String name) {
if (name.equalsIgnoreCase(fileName)) {
return true;
}
return false;
}
});
if (ArrayUtils.isNotEmpty(listFiles)) {
return Arrays.stream(listFiles).findFirst().get().getPath();
}
if (file.isDirectory()) {
filterWantedFile(file, fileName);
}
}
return null;
}
测试一把:
@Test
public void testName() throws Exception {
File androidHome = new File(System.getenv("ANDROID_HOME"));
String adbPath = filterWantedFile(androidHome, "adb.exe");
Assert.assertTrue(StringUtils.isNotBlank(adbPath));
System.out.println(adbPath);
}
结果通过: