[java]代码库
/**
* 目录实用工具 策略设计模式 目录下的文件
* @author LHL
*
*/
public class ProcessFiles {
public interface Strategy{
void process(File file);
}
private Strategy strategy;
private String ext;
public ProcessFiles(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 {
if(!arg.endsWith("."+ext)) {//后缀
arg += "."+ext;//后缀拼接
}
strategy.process(new File(arg).getCanonicalFile());//该方法返回同一个文件或目录的规范路径名字符串表示
}
}
}
} catch (IOException e) {
// TODO: handle exception
throw new RuntimeException(e);
}
}
private void processDirectoryTree(File root) throws IOException {//返回目录下的文件
// TODO Auto-generated method stub
for(File file : Directory.TreeInfo.walk(root.getAbsolutePath(),".*\\."+ext)) {
strategy.process(file.getCanonicalFile());
//System.out.println(file);
}
}
public static void main(String[] args) {
// TODO Auto-generated method stub
String suffix = "class";//后缀名
new ProcessFiles(new Strategy() {//通过有参构造器创建ProcessFiles对象(参数Strategy,String)
@Override
public void process(File file) {
// TODO Auto-generated method stub
System.out.println(file);
}
}, suffix).start(args);//给构造器传参
}
}