Java FileFilter Example

Java java.io.FileFilter class is a filter that can be used to returns abstract pathnames denoting the files and directories in a given directory.

1. FileFilter class

The FileFilter class is a filter for abstract pathnames. It has only a single method that tests whether or not the specified abstract pathname should be included in a pathname list.

It returns true if and only if pathname should be included in the list.

boolean	accept(File pathname)

2. Using FileFilter with File class

The best way to use the FileFilter is to pass it to listFiles() method in File class where File represents a directory location:

  • File[] listFiles(FileFilter filter): returns an array of abstract pathnames denoting the files and directories that satisfy the specified filter.

3. Java FileFilter Example

Example 1: Creating a FileFilter instance

The given accept() method check for the file extension; if it is .log then it is considered log file and method returns true otherwise method returns false.

//create a FileFilter and override its accept-method
FileFilter logFilefilter = new FileFilter() 
{
	  //Override accept method
	  public boolean accept(File file) {
			 
			 //if the file extension is .log return true, else false
			 if (file.getName().endsWith(".log")) {
				return true;
			 }
			 return false;
	  }
};

Example 2: Java program to find all log files in a directory using FileFilter class

import java.io.File;
import java.io.FileFilter;

public class IOUtils
{
   public static void main(String[] args)
   {
      IOUtils ioUtils = new IOUtils();
      ioUtils.getFiles("C:\\temp");
   }

   public void getFiles(String dir)
   {
      File directory = new File(dir);

      //Verify if it is a valid file name
      if (!directory.exists())
      {
         System.out.println(String.format("Directory %s does not exist", dir));
         return;
      }

      //Verify if it is a directory and not a file path
      if (!directory.isDirectory())
      {
         System.out.println(String.format("Provided value %s is not a directory", dir));
         return;
      }

      File[] files = directory.listFiles(logFilefilter);

      //Let's list out the filtered files
      for (File f: files)
      {
         System.out.println(f.getName());
      }
   }

   //create a FileFilter and override its accept-method
   FileFilter logFilefilter = new FileFilter() {
      //Override accept method
      public boolean accept(File file) {
         //if the file extension is .log return true, else false
         if (file.getName().endsWith(".log")) {
            return true;
         }
         return false;
      }
   };
}

Program Output:

test.log
test1.log

Above program will list down all .log files present in c:/temp folder.

Happy Learning !!

Was this post helpful?

Join 7000+ Fellow Programmers

Subscribe to get new post notifications, industry updates, best practices, and much more. Directly into your inbox, for free.

1 thought on “Java FileFilter Example”

  1. returns an array of abstract pathnames indicating the files and directories in the directory indicated by this abstract pathname that satisfy the specified filter.

    Reply

Leave a Comment

HowToDoInJava

A blog about Java and its related technologies, the best practices, algorithms, interview questions, scripting languages, and Python.