Filename Filters

You often want to look for a particular kind of filefor example, text files. To do this, you need a FilenameFilter object that specifies which files you'll accept. FilenameFilter is an interface in the java.io package:

public interface FilenameFilter

This interface declares a single method, accept( ):

public abstract boolean accept(File directory, String name);

The directory argument is a File object pointing to a directory, and the name argument is the name of a file. The method should return true if a file with this name in this directory passes through the filter and false if it doesn't. Example 17-7 is a class that filters out everything that is not an HTML file.

Example 17-7. HTMLFilter

import java.io.*;
public class HTMLFilter implements FilenameFilter {
 public boolean accept(File directory, String name) {
 if (name.endsWith(".html")) return true;
 if (name.endsWith(".htm")) return true;
 return false;
 }
}

Files can be filtered using any criteria you like. An accept( ) method may test modification date, permissions, file size, and any attribute Java supports. This accept( ) method tests whether the file ends with .html and is in a directory where the program can read files:

public boolean accept(File directory, String name) {
 if (name.endsWith(".html") && directory.canRead( )) {
 return true;
 }
 return false;
}

Filename filters are primarily intended for the use of file dialogs, which will be discussed in the next chapter. However, the listFiles( ) method can take a FilenameFilter as an argument:

public File[] listFiles(FilenameFilter filter)

This method assumes that the File object represents a directory. The array of File objects returned by listFiles( ) only contains those files that passed the filter. For example, the following lines of code list HTML files in the /public/html/javafaq directory using the HTMLFilter of Example 17-7:

File dir = new File("/public/html/javafaq");
File[] htmlFiles = dir.listFiles(new HTMLFilter( ));
for (int i = 0; i < htmlFiles.length; i++) {
 System.out.println(htmlFiles[i]);
}


Basic I/O

Introducing I/O

Output Streams

Input Streams

Data Sources

File Streams

Network Streams

Filter Streams

Filter Streams

Print Streams

Data Streams

Streams in Memory

Compressing Streams

JAR Archives

Cryptographic Streams

Object Serialization

New I/O

Buffers

Channels

Nonblocking I/O

The File System

Working with Files

File Dialogs and Choosers

Text

Character Sets and Unicode

Readers and Writers

Formatted I/O with java.text

Devices

The Java Communications API

USB

The J2ME Generic Connection Framework

Bluetooth

Character Sets



Java I/O
Java I/O
ISBN: 0596527500
EAN: 2147483647
Year: 2004
Pages: 244

Flylib.com © 2008-2020.
If you may any questions please contact us: flylib@qtcs.net