Java copia una carpeta excluyendo algún archivo interno
Tengo una carpeta con esta estructura
carpeta principa
--Sub1
--File .scl
--File .awl
--Other files
--Sub2
--Files
--Sub3
--Sub4
Quiero copiarlo en otra ubicación pero quiero evitar el Sub3 y (dependiendo de la situación) algún archivo del Sub1
Aquí hay un extracto de lo que hice hasta ahora:
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;
}
Aparentemente parece que funciona. Pero creo que es una solución muy fea ... ¿Alguien sabe una mejor manera?
P.S: por supuesto, Settings.getSiemensOptionAWL () es solo una función booleana para devolver mi decisión