Вы могли бы сделать несколько вещей с этим кодом, я бы, честно говоря, немного реорганизовал бы это, и ваш белый список был бы ArrayList расширений.
Например:
private String[] getFileListing(String servers) throws IOException {
List<String> allowedExtensions = Arrays.asList("log txt".split(" "));
Properties prop = new Properties();
String propFileName = "config.properties";
InputStream input = getClass().getClassLoader().getResourceAsStream(propFileName);
prop.load(input);
File f = new File(prop.getProperty("path." + servers));
String[] list = f.list(new FilenameFilter() {
public boolean accept(File dir, String name) {
return allowedExtensions.contains(name.substring(name.lastIndexOf(".") + 1, name.length()));
}
});
return list;
}
Но, как уже говорилось, в вашем коде есть несколько других вещей, которые можно оптимизировать, например, как я изменил выше, вы проверяете, совпадает ли строка сервера с чем-то, а затем загружаете ее, я предположил, потому что вытолько MS1 и MS2, при этом, если было задумано, что он загружает MS2 всегда на каждом параметре серверов, кроме MS1, вы можете сделать это так:
private String[] getFileListing(String servers) throws IOException {
List<String> allowedExtensions = Arrays.asList("log txt".split(" "));
Properties prop = new Properties();
String propFileName = "config.properties";
InputStream input = getClass().getClassLoader().getResourceAsStream(propFileName);
prop.load(input);
File f = new File(prop.getProperty("path.ms2"));
if(servers.equals("MS1")){
f = new File(prop.getProperty("path." + servers));
}
String[] list = f.list(new FilenameFilter() {
public boolean accept(File dir, String name) {
return allowedExtensions.contains(name.substring(name.lastIndexOf(".") + 1, name.length()));
}
});
return list;
}
Если вы хотите поддерживать другие вещиКак и .log.1 или .log.2, этот подход не сработает, но вы можете инвертировать его и сделать список черным списком расширений или использовать регулярное выражение для сопоставления имен файлов, например, для любого файла, заканчивающегося на.log или .log.
это регулярное выражение будет соответствовать любому имени файла, которое соответствует условиям вашего белого списка:
^.+(.log|.txt)(.\d)?$
Вы можете увидеть это с некоторыми примерами совпадений здесь