There is an alternative for list method discussed in
Using FilenameFilter Interface In Java. list method it returns the names of the
String
array. But what if we want
File
objects. So in order to get File objects we use a method
listFiles
which returns
File
objects that match the specified criteria.
The signatures for listFiles() are shown below:
File[] listFiles()
File[] listFiles(FilenameFilter FFObj)
File[] listFiles(FileFilter FObj)
These methods return the file list as an array of
File
objects instead of strings.
The first method works just like the
list
method only difference it returns the File objects.
The second method it returns the
File
objects that ends with the specified extension.
FilenameFilter
interface has a method
boolean accept(File directory, String filename)
the classes which implement
FilenameFilter
should implement the
accept
method also.
The third method it returns the
File
objects as we specify. Here we can present a filter so that the
File
objects which passes the filter are accepted.
FileFilter
interface has a method
boolean accept(File pathname)
the classes which implements the interface should also implement the
accept
method.
class FileFiltering
{
public static void main(String arg[])
{
File f = new File("C:\\"); // LINE A
FilenameFilter fnf = new Extension(".mp4");
File[] farray = f.listFiles(fnf); // LINE B
for(int i =0; i < farray.length; i++)
{
System.out.println(farray[i]); // LINE C
}
System.out.println("------------------------");
FileFilter ff = new CheckFilter();
File ffarray[] = f.listFiles(ff); // LINE D
for(int i =0; i < ffarray.length; i++)
{
System.out.println(ffarray[i]);
}
}
}
class Extension implements FilenameFilter
{
String name;
public Extension(String name)
{
this.name = name;
}
public boolean accept(File dir, String name)
{
return name.endsWith(this.name);
}
}
class CheckFilter implements FileFilter
{
public boolean accept(File pathname)
{
return pathname.toString().endsWith("jpg");
}
}
OUTPUTC:\Java Beginner Tutorial 4.mp4
C:\Java Programming Tutorial 3.mp4
C:\Java Tutorial for beginners 2.mp4
C:\Java Tutorial for Beginners.mp4
------------------------
C:\20140626_123436.jpg
C:\20140626_123455.jpg
C:\20140626_123511.jpg
C:\20140626_123525.jpg
DESCRIPTIONIn the above program we have two classes apart from main class. Extension
implements FilenameFilter
and implements accept
method which filters files that end with the extension .mp4
and CheckFilter
implements FileFilter
and implements accept
method which filters files that end with the extension .jpg
At LINE A
we created a File
Object and set the path to drive C:
At LINE B
we are invoking the listFiles(FilenameFilter ffobj)
method
At LINE C
we are printing the File
objects obtained from listFiles
method.
At LINE D
we are invoking listFiles(FileFilter fobj)
method.
THINGS TO TRY
- Obtain all text files from
C:
with listFiles(FilenameFilter ffobj)
- Obtain all the directories in drive
C:
with listFiles(FileFilter fobj)