У меня есть папка с такой структурой
mainFolder
--Sub1
--File .scl
--File .awl
--Other files
--Sub2
--Files
--Sub3
--Sub4
Я хочу скопировать ее в другое место, но я хочу, чтобы Sub3 избегал и (в зависимости от ситуации) какой-то файл из Sub1
Вот отрывок из того, что я сделал до сих пор:
FileUtils.copyDirectory(srcDir, dstDir, new FileFilter() {
public boolean accept(File pathname) {
// We don't want 'Sub3' folder to be imported
// + look at the settings to decide if some format needs to be
// excluded
String[] ignoreList= new String[]{
!Settings.getSiemensOptionAWL() ? ".awl":"uselessStringWilNeverBeFound",
!Settings.getSiemensOptionSCL() ? ".scl":"uselessStringWilNeverBeFound",
"Sub3"
};
return !(ignoreFile(pathname, ignoreList) && pathname
.isDirectory());
}
}, true);
public static boolean ignoreFile(File file, String[] ignoreList) {
for (final String ignoreStr : ignoreList)
if (file.getAbsolutePath().contains(ignoreStr))
return true;
return false;
}
Похоже, это работает. Но я считаю, что это очень уродливое решение .... Кто-нибудь знает способ получше?
P.S: конечно Settings.getSiemensOptionAWL () - это просто логическая функция, которая возвращает мое решение