Java File Filter Example
Usually there is a need of filtering files into our app and/or show only specific type of files to the users. So, we can limit the appearance of the files with the use of FilenameFilter
interface. This could be useful when we have to deal with large file systems or facilitate the user to select a file.
In this example we are going to show you how to filter files with a specific extension, by using the FilenameFilter
interface.
1. Create the FilenameFilter interface
Create a new java file with the name MyFileFilterClass
into the package com.javacodegeeks.javacore.filefilter
. Then paste the following code.
MyFileFilterClass.java:
package com.javacodegeeks.javacore.filefilter; import java.io.File; import java.io.FilenameFilter; public class MyFileFilterClass implements FilenameFilter { private String[] extensionArray = {"txt", "pdf"}; @Override public boolean accept(File dir, String name) { if(dir.exists()) { for(String ext : extensionArray) { if(name.endsWith(ext)) return true; } } return false; } }
This class implements the FilenameFilter
and overrides the accept()
method. FilenameFilter
interface help us to filter files with a specified extension. accept()
operation checks whether the file, that is characterized by the arguments (its directory and its name), should be included into a file list. The check is based on the conditions we set. In our example, we accept the files that end with one of the strings that are declared into the extensionArray
– txt
or pdf
files only. All the other files are rejected, so false is returned at this situation.
2. Create the Main Class
Now let’s create a new class that will contain a MyFileFilterClass
instance. Specify the name of the java file – FileFilterMain
– and put it into the com.javacodegeeks.javacore.filefilter
package. Then paste the following code.
FileFilterMain.java:
package com.javacodegeeks.javacore.filefilter; import java.io.File; import java.io.FilenameFilter; public class FileFilterMain { private static String PATH = "C://JCGFolder"; public static void main(String[] args) { File myFile = new File(PATH); if(!myFile.exists()) { System.out.println("The file does not exist..."); System.exit(1); } FilenameFilter filter = new MyFileFilterClass(); // a list that contains only files with the specified extension File[] fileList = myFile.listFiles(filter); if(fileList.length > 0) { System.out.println("Containing files with the use of filter are:"); for(File file : fileList) { System.out.println(file.getAbsolutePath()); } } else { System.out.println("There are not such files into the "+myFile); } System.out.println("---------------------------------------------------"); // list without a file filter File[] listNoExt = myFile.listFiles(); if(fileList.length > 0) { System.out.println("Containing files without the filter are:"); for(File file : listNoExt) { System.out.println(file.getAbsolutePath()); } } else { System.out.println("There are no files at all"); } } }
As you can notice from the code above, after the creation of the MyFileFilterClass
instance we invoke listFiles()
function of the java.io.File
class, by passing the MyFileFilterClass
instance as an argument. With this way, we get a list of File
s – fileList
– that includes only the files with the specific extension.
If we call again listFiles()
method without using a filter, the file list will contain all the files of the specified folder.
You can also have a look at the execution of the code above, for further comprehension.
Output:
Containing files with the use of filter are: C:\JCGFolder\jcg.txt C:\JCGFolder\test.pdf --------------------------------------------------- Containing files without the filter are: C:\JCGFolder\imageTXT.jpg C:\JCGFolder\jcg.txt C:\JCGFolder\readme.odt C:\JCGFolder\test.pdf
It is important to mention that the filtering can be more complex. For example we can use regular expressions and filter files that have only letters etc. Nevertheless, our filtering conditions are set into the accept()
method of the FilenameFilter
class.
Download the Eclipse Project
This was an example of file filter in Java.
You can download the full source code of this example here : FileFilterExample.zip