用户注册



邮箱:

密码:

用户登录


邮箱:

密码:
记住登录一个月忘记密码?

发表随想


还能输入:200字
云代码 - java代码库

多重目录下的文件打印--摘自Java编程思想

2018-11-13 作者: TravelLight举报

[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);//给构造器传参
	}
}


网友评论    (发表评论)


发表评论:

评论须知:

  • 1、评论每次加2分,每天上限为30;
  • 2、请文明用语,共同创建干净的技术交流环境;
  • 3、若被发现提交非法信息,评论将会被删除,并且给予扣分处理,严重者给予封号处理;
  • 4、请勿发布广告信息或其他无关评论,否则将会删除评论并扣分,严重者给予封号处理。


扫码下载

加载中,请稍后...

输入口令后可复制整站源码

加载中,请稍后...