Search code examples
javaapache-commonsfileutils

FileUtils.listFiles to exclude specific file extensions from listing


I use this code to get all the files from a given directory recursively.

List<File> fileList = (List<File>) FileUtils.listFiles(new File(directoryName), null , true);

I would like to exclude some files from listing, so second parameter value of method isn't suitable for this purpose. I tried to use also notFileFilter, but I can't use it recursively.

FileFilter fileFilter1 =   FileFilterUtils.notFileFilter(FileFilterUtils.nameFileFilter(".info", null));
List<File> fileList = (List<File>) FileUtils.listFiles(new File(directoryName), fileFilter1, true);

Solution

  • Use the other overload of the listFiles method:

    FileFilter notInfoFilter = FileFilterUtils.notFileFilter(
            FileFilterUtils.suffixFileFilter(".info", IOCase.SYSTEM));
    
    Collection<File> files = FileUtils.listFiles(
            new File(directoryName), notInfoFilter, TrueFileFilter.INSTANCE);