/**

*

*/

package com.zachary.io.util;

import java.io.File;

import java.io.IOException;

/**

* @author Zachary.Zheng

* @version 1.0

* @date 2019年11月9日

*/

public class ProcessFiles {

/**

* 定义回调函数接口

* 在调用时实现

* @author Zachary.Zheng

* @version 1.0

* @date 2019年11月9日

*/

public interface Strategy{

void process(File file);

}

private Strategy strategy;

private String ext;

public ProcessFiles(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\IOStreamworkSpace\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

*///:~

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐