Strategy mode (callback)

/ ** 
 * 
 * / 
Package Penalty for com.zachary.io.util; 

Import java.io.File; 
Import java.io.IOException; 

/ ** 
 * @author Zachary.Zheng 
 * @version 1.0 
 * @date November 9, 2019 day 
 * / 
public class the Process Files { 
	/ ** 
	 * define the callback function interface 
	 * realized when calling 
	 * @author Zachary.Zheng 
	 * @version 1.0 
	 * @date 2019 Nian 11 Yue 9 day 
	 * / 
	public interface at Strategy { 
		void Process (File File ); 
	} 
	Private Strategy Strategy; 
	Private String EXT; 
	public the Process Files (Strategy Strategy, String EXT) { 
		Super ();  
		this.strategy = Strategy;
		this.ext EXT =; 
	}
	public ProcessFiles() {
		super();
	}

	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 (Exception e) {
			// TODO: handle exception
		}
	}
	public void processDirectoryTree(File root) throws IOException {
		for(File file: Directory.walk(root.getAbsolutePath(), ".*\\."+ext)) {
			// 执行回调函数
			strategy.process(file.getCanonicalFile());
		}
	}
	public static void main(String[] args) {
		new ProcessFiles(new ProcessFiles.Strategy() {
			// 回调函数
			public void process(File file) {
				System.out.println(file);
			}
		}, "java").start(args);;
	}
}
/* Output: (sample)
E:\\javaBaseLearn\\IOStream\workSpace\\java-io-stream\\src\\com\\zachary\\io\\util\\Directory.java
E:\\javaBaseLearn\\IOStream\\workSpace\\java-io-stream\\src\\com\\zachary\\io\\util\\DirList.java
E:\\javaBaseLearn\\IOStream\\workSpace\\java-io-stream\\src\\com\\zachary\\io\\util\\DirList2.java
E:\\javaBaseLearn\\IOStream\\workSpace\\java-io-stream\\src\\com\\zachary\\io\\util\\DirList3.java
E:\\javaBaseLearn\\IOStream\\workSpace\\java-io-stream\\src\\com\\zachary\\io\\util\\PPrint.java
E:\\javaBaseLearn\\IOStream\\workSpace\\java-io-stream\\src\\com\\zachary\\io\\util\\ProcessFiles.java
E:\\javaBaseLearn\\IOStream\\workSpace\\java-io-stream\\src\\com\\zachary\\io\\util\\TreeInfo.java 
*///:~

  

Guess you like

Origin www.cnblogs.com/zhongli1/p/11828238.html