日期:2014-05-20 浏览次数:20831 次
import java.io.*;
public class Test {
public interface Strategy {
void process(File file);
}
private Strategy strategy;
private String ext;
public Test(Strategy strategy, String ext) {
this.strategy = strategy;
this.ext = ext;
}
public void start(String[] args) {
try {
if (args.length == 0) {
processDirectoryTree(new File("."));
} else {
for (String arg : args) {
File fileArg = new File(arg);
if (fileArg.isDirectory()) {
processDirectoryTree(fileArg);
} else {
// Allow user to leave off extension:
if (!arg.endsWith("." + ext)) {
arg += "." + ext;
}
strategy.process(
new File(arg).getCanonicalFile());
}
}
}
} catch (IOException e) {
throw new RuntimeException(e);
}
}
public void
processDirectoryTree(File root) throws IOException {
for (File file : Directory.walk(
root.getAbsolutePath(), ".*\\." + ext)) {
strategy.process(file.getCanonicalFile());
}
}
// Demonstration of how to use it:
public static void main(String[] args) {
new Test(new Test.Strategy() {
public void process(File file) {
System.out.println(file);
}
}, "java").start(args);
}
} /* (Execute to see output) *///:~
import java.util.regex.*;
import java.io.*;
import java.util.*;
public final class Directory {
public static File[]
local(File dir, final String regex) {
return dir.listFiles(new FilenameFilter() {
private Pattern pattern = Pattern.compile(regex);