This package defines an interface (IOFileFilter) that combines both
FileFilter and FilenameFilter . Besides
that the package offers a series of ready-to-use implementations of the
IOFileFilter interface including implementation that allow you to combine
other such filters.
These filter can be used to list files or in FileDialog ,
for example.
These boolean FilenameFilters can be nested, to allow arbitrary expressions.
For example, here is how one could print all non-directory files in the
current directory, starting with "A", and ending in ".java" or ".class":
File dir = new File(".");
String[] files = dir.list(
new AndFileFilter(
new AndFileFilter(
new PrefixFileFilter("A"),
new OrFileFilter(
new SuffixFileFilter(".class"),
new SuffixFileFilter(".java")
)
),
new NotFileFilter(
new DirectoryFileFilter()
)
)
);
for ( int i=0; i<files.length; i++ ) {
System.out.println(files[i]);
}
This package also contains a utility class:
FileFilterUtils. It allows you to use all
file filters without having to put them in the import section. Here's how the
above example will look using FileFilterUtils:
File dir = new File(".");
String[] files = dir.list(
FileFilterUtils.andFileFilter(
FileFilterUtils.andFileFilter(
FileFilterUtils.prefixFileFilter("A"),
FileFilterUtils.orFileFilter(
FileFilterUtils.suffixFileFilter(".class"),
FileFilterUtils.suffixFileFilter(".java")
)
),
FileFilterUtils.notFileFilter(
FileFilterUtils.directoryFileFilter()
)
)
);
for ( int i=0; i<files.length; i++ ) {
System.out.println(files[i]);
}
There are a few other goodies in that class so please have a look at the
documentation in detail.
This package defines an interface (IOFileFilter) that combines both FileFilter and FilenameFilter . Besides that the package offers a series of ready-to-use implementations of the IOFileFilter interface including implementation that allow you to combine other such filters.
These filter can be used to list files or in FileDialog , for example.
There are a number of 'primitive' filters:
And there are five 'boolean' filters:
These boolean FilenameFilters can be nested, to allow arbitrary expressions. For example, here is how one could print all non-directory files in the current directory, starting with "A", and ending in ".java" or ".class":
File dir = new File("."); String[] files = dir.list( new AndFileFilter( new AndFileFilter( new PrefixFileFilter("A"), new OrFileFilter( new SuffixFileFilter(".class"), new SuffixFileFilter(".java") ) ), new NotFileFilter( new DirectoryFileFilter() ) ) ); for ( int i=0; i<files.length; i++ ) { System.out.println(files[i]); }This package also contains a utility class: FileFilterUtils. It allows you to use all file filters without having to put them in the import section. Here's how the above example will look using FileFilterUtils:
File dir = new File("."); String[] files = dir.list( FileFilterUtils.andFileFilter( FileFilterUtils.andFileFilter( FileFilterUtils.prefixFileFilter("A"), FileFilterUtils.orFileFilter( FileFilterUtils.suffixFileFilter(".class"), FileFilterUtils.suffixFileFilter(".java") ) ), FileFilterUtils.notFileFilter( FileFilterUtils.directoryFileFilter() ) ) ); for ( int i=0; i<files.length; i++ ) { System.out.println(files[i]); }There are a few other goodies in that class so please have a look at the documentation in detail.