Tengo una carpeta con esta estructuraJava copiar una carpeta excluyendo algunos archivos interno
mainFolder
--Sub1
--File .scl
--File .awl
--Other files
--Sub2
--Files
--Sub3
--Sub4
quiero copiar a otra ubicación, pero quiero la Sub3 que hay que evitar y (dependiendo de la situación) algún archivo de la Sub 1
he aquí 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;
}
Parece que funciona. Pero creo que es una solución muy fea ... ¿Alguien sabe una mejor manera?
P.S: de Settings.getSiemensOptionAWL curso() es sólo función booleana taħt volver mi decisión
Puede ser fácil copiar todo el directorio a la nueva ubicación, luego eliminar los archivos (de esa copia) que no deberían estar allí. Obviamente, esto no será apropiado si el motivo está relacionado con la seguridad en lugar de la funcionalidad básica. –
Veo a qué se refiere ... pero imagínese que no tiene el riesgo de que el usuario copie los datos que no tiene el usuario.(este no es el caso, pero quiero tener una solución limpia) :) – Stefano
incluso ... al parecer a veces funciona, pero en algún momento no lo hace ... tal vez hay una mejor manera de lo mismo piensa! – Stefano