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[] 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 !!
Ramu
returns an array of abstract pathnames indicating the files and directories in the directory indicated by this abstract pathname that satisfy the specified filter.