/*
*/
import java.io.*;
import PatternMatch;
/* This is a class that makes use of the PatternMatch class to implement
* a simple file filter. When running this class, make sure you enclose
* any arguments with wildcard characters in quotation marks so they will
* be treated as a literal string; otherwise they will be expanded for you
* on the command line before being passed to the program. For example:
* jdir "c:\*.bat"
* instead of:
* jdir c:\*.bat
*/
public class jdir
{
public static void main(String args[])
{
String dirName = new String("."); // default to current directory
String filePattern = new String("*.*"); // default to all files
int i;
if (args.length > 0)
{
// if there's a path separator in the argument, split the
// directory name and the file pattern filter; otherwise,
// treat the whole argument as a file pattern
i = args[0].lastIndexOf(File.separator);
if (i >= 0)
{
dirName = args[0].substring(0, i);
if (i < args[0].length() - 1)
filePattern = args[0].substring(i+1);
} else {
filePattern = args[0];
}
}
File f = new File(dirName);
String[] theFiles = f.list(new PatternFilter(filePattern));
for (i = 0; i < theFiles.length; i++)
System.out.println(theFiles[i]);
}
}
class PatternFilter implements FilenameFilter
{
String pattern;
public PatternFilter (String thePattern)
{
pattern = thePattern.toLowerCase();
}
public boolean accept(File dir, String name)
{
// make sure everything's lowercase, so the match will not be
// case-sensitive
String ldir = dir.toString().toLowerCase();
String lname = name.toLowerCase();
PatternMatch pm = new PatternMatch();
return ((pm.isMatch(ldir + dir.separator + lname, pattern)) ||
(pm.isMatch(name, pattern)) );
}
}