package think.in.java.io;
import java.io.File;
import java.io.FilenameFilter;
import java.util.Arrays;
import java.util.regex.Pattern;
/**
* Display a directory listing using regular expressions.
* {Args: "D.*\.java"}
* @author WPeng
*
* @since 2012-11-2
*/
public class DirList {
public static void main(String[] args) {
File path = new File("D:\\Users\\wpeng\\workspace\\Hello\\src\\think\\in\\java\\io");
String[] list;
if(args.length == 0){
list = path.list();
}else{
list = path.list(new DirFilter(args[0]));
}
Arrays.sort(list, String.CASE_INSENSITIVE_ORDER);
for(String dirItem : list){
System.out.println(dirItem);
}
}
}
class DirFilter implements FilenameFilter{
private Pattern pattern;
public DirFilter(String regex){
pattern = Pattern.compile(regex);
}
@Override
public boolean accept(File dir, String name) {
return pattern.matcher(name).matches();
}
}
package think.in.java.io;
import java.io.File;
import java.io.FilenameFilter;
import java.util.Arrays;
import java.util.regex.Pattern;
/**
* Uses anonymous inner classes.
* {Args: "D.*\.java"}
* @author WPeng
*
* @since 2012-11-2
*/
public class DirList2 {
public static FilenameFilter filter(final String regex){
// Creation of anonymous inner class
return new FilenameFilter() {
private Pattern pattern = Pattern.compile(regex);
@Override
public boolean accept(File dir, String name) {
return pattern.matcher(name).matches();
}
}; // End of anonymous inner class
}
public static void main(String[] args) {
File path = new File("D:\\Users\\wpeng\\workspace\\Hello\\src\\think\\in\\java\\io");
String[] list;
if(args.length == 0){
list = path.list();
}else{
list = path.list(filter(args[0]));
}
Arrays.sort(list, String.CASE_INSENSITIVE_ORDER);
for(String dirItem : list){
System.out.println(dirItem);
}
}
}
package think.in.java.io;
import java.io.File;
import java.io.FilenameFilter;
import java.util.Arrays;
import java.util.regex.Pattern;
/**
* Building the anonymous inner class "in-place".
* {Args: "D.*\.java"}
* @author WPeng
*
* @since 2012-11-2
*/
public class DirList3 {
public static void main(final String[] args) {
File path = new File("D:\\Users\\wpeng\\workspace\\Hello\\src\\think\\in\\java\\io");
String[] list;
if(args.length == 0){
list = path.list();
}else{
list = path.list(new FilenameFilter() {
private Pattern pattern = Pattern.compile(args[0]);
@Override
public boolean accept(File dir, String name) {
return pattern.matcher(name).matches();
}
});
}
Arrays.sort(list, String.CASE_INSENSITIVE_ORDER);
for(String dirItem : list){
System.out.println(dirItem);
}
}
}
/** Output:
* DirList.java
* DirList2.java
* DirList3.java
*/