Java копирует папку, за исключением некоторого внутреннего файла

У меня есть папка с такой структурой

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 () - это просто логическая функция, которая возвращает мое решение

5
задан Tunaki 29 August 2015 в 17:18
поделиться