Search code examples
javafileutilsapache-commons-io

How to get list of files with specified extensions and excluding few directories?


I need to list files(specified extensions) from a directory excluding a few subdirectories.

I'm able to filter with extensions but not with two conditions 1) Files should be filtered by extension 2) Should exclude few subdirectories

    File dir = new File("D:\\SomeDir");
    String[] extensions = new String[] { "txt", "java" };
    List<File> files = (List<File>) FileUtils.listFiles(dir, extensions, true);
    for (File file : files) {
        System.out.println("file: " + file.getCanonicalPath());
    }

How to exclude selected subdirectories?


Solution

  • try this code:

    // for exlude file extension  
    NotFileFilter suffixFileFilterFileFilter=new NotFileFilter(new 
    SuffixFileFilter(new String[] { "txt", "java" }));  
    
    //to include only selected extension use below one
    //IOFileFilter suffixFileFilterFileFilter= new SuffixFileFilter(new String[] { "java", "txt" });
    
    NotFileFilter directoryFileFilterFileFilter=new NotFileFilter(new 
    PrefixFileFilter(new String[] { "tolearn", "dir2" }));   // for directory
    File dir = new File("D:\\SomeDir");
    List<File> fileList  = (List<File>)  FileUtils.listFiles(dir,suffixFileFilterFileFilter,directoryFileFilterFileFilter);
        for (File file : fileList) {
            System.out.println("file: " + file.getCanonicalPath());
        }