У меня есть эта функция, которая рекурсивно печатает имя всех файлов в каталоге. Проблема в том, что мой код очень медленный, потому что ему приходится обращаться к удаленному сетевому устройству на каждой итерации.
Мой план состоит в том, чтобы сначала загрузить все файлы из каталога рекурсивно, а затем просмотреть все файлы с регулярным выражением, чтобы отфильтровать все файлы, которые мне не нужны. У кого-нибудь есть лучшее предложение?
public static printFnames(String sDir){
File[] faFiles = new File(sDir).listFiles();
for(File file: faFiles){
if(file.getName().matches("^(.*?)")){
System.out.println(file.getAbsolutePath());
}
if(file.isDirectory()){
printFnames(file.getAbsolutePath());
}
}
}
Это всего лишь тест, позже я не буду использовать такой код, вместо этого я добавлю путь и дату модификации каждого файла, который соответствует расширенному регулярному выражению, в массив.
Files.walk(Paths.get("/etc")).filter(Files::isRegularFile).collect(Collectors.toList())
23.04.2017