/ ** * * / 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 *///:~