package com.AsamiOffice.io;
import java.io.*;
/**
* The AndFilenameFilter is a FilenameFilter to combine multiple conditions
* using logical 'and' operation.
*
* @since Feb. 11, 1998
* @version May. 6, 1998
* @author ASAMI, Tomoharu (tasami@ibm.net)
*/
public class AndFilenameFilter implements FilenameFilter {
/**
* Creates a AndFilenameFilter out of two FilenameFilters.
*
* @param one first FilenameFilter
* @param two second FilenameFilter
*/
public AndFilenameFilter(FilenameFilter one, FilenameFilter two) {
filters_ = new FilenameFilter[2];
filters_[0] = one;
filters_[1] = two;
}
/**
* Creates a AndFilenameFilter out of multiple FilenameFilters.
*
* @param filters array of FilenameFilters
*/
public AndFilenameFilter(FilenameFilter[] filters) {
filters_ = (FilenameFilter[])filters.clone();
}
/**
* Test if a specified file satisfies all conditions registered.
*
* @param dir the direcotry in which the file was found
* @param name the name of the file
* @see java.io.FilenameFilter
*/
public boolean accept(File dir, String name) {
for (int i = 0;i < filters_.length;i++) {
if (!filters_[i].accept(dir, name)) {
return (false);
}
}
return (true);
}
private FilenameFilter[] filters_;
// test dirver
public static void main(String[] args) {
File dir = new File(args[0]);
String[] files = dir.list(new AndFilenameFilter(
new FileFilenameFilter(),
new SuffixFilenameFilter("java")
));
for (int i = 0;i < files.length;i++) {
System.out.println(files[i]);
}
}
}