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

Respuestas a la pregunta(4)

Su respuesta a la pregunta