O'Reilly logo

Java I/O by Elliotte Rusty Harold

Stay ahead with the world's most comprehensive technology and business learning platform.

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, tutorials, and more.

Start Free Trial

No credit card required

File Filters

Java 2 adds a new java.io.FileFilter interface that’s very similar to FilenameFilter:

public abstract interface FileFilter  // Java 2

The accept() method of FileFilter takes a single File object as an argument, rather than two strings giving the directory and path:

public boolean accept(File pathname)  // Java 2

Example 12.7 is a filter that only passes HTML files. Its logic is essentially the same as the filter of Example 12.6.

Example 12-7. HTMLFileFilter

import java.io.*;

public class HTMLFileFilter implements FileFilter {

 public boolean accept(File pathname) {
 
   if (pathname.getName().endsWith(".html")) return true;
   if (pathname.getName().endsWith(".htm")) return true;
   return false;
 }
}

This class appears as an argument in one of the listFiles() methods of java.io.File:

public File[] listFiles(FileFilter filter)      // Java 2

Example 12.8 uses the HTMLFileFilter to list the HTML files in the current working directory.

Example 12-8. List HTML Files

import java.io.*; 

public class HTMLFiles {

  public static void main(String[] args) {
    
    File cwd = new File(System.getProperty("user.dir"));
    File[] htmlFiles = cwd.listFiles(new HTMLFileFilter());
    for (int i = 0; i < htmlFiles.length; i++) {
      System.out.println(htmlFiles[i]);
    }
  }
}

Note

There’s a nasty name conflict between the java.io.FileFilter interface and the abstract javax.swing.filechooser.FileFilter class discussed in the next chapter. I would not be surprised if this interface were replaced by a new abstract FileFilter class more ...

With Safari, you learn the way you learn best. Get unlimited access to videos, live online training, learning paths, books, interactive tutorials, and more.

Start Free Trial

No credit card required