用户注册



邮箱:

密码:

用户登录


邮箱:

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

发表随想


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

打印目录和文件--摘自Java编程思想

2018-11-13 作者: TravelLight举报

[java]代码库

//需要格式打印类  PPrint.java
public class Directory {
	
	public static File[] local(File dir,final String regex) {
		return dir.listFiles(new FilenameFilter() {
			private Pattern pattern = Pattern.compile(regex);
			@Override
			public boolean accept(File dir, String name) {
				// TODO Auto-generated method stub
				return pattern.matcher(new File(name).getName()).matches();
			}
		});
	}
	@SuppressWarnings("static-access")
	public static void main(String[] args) {
		if(args.length == 0) {
			System.out.println("===============AllFile=============");
			System.out.println(new TreeInfo().walk(".",RegexString.SUFFIX_ALL));//,RegexString.SUFFIX_ALL表示正则表达式
			System.out.println("===============.java===============");
			System.out.println(new TreeInfo().walk(".",RegexString.SUFFIX_JAVA));
			System.out.println("===============.class===============");
			System.out.println(new TreeInfo().walk(".",RegexString.SUFFIX_CLASS));
			 
		}else {
			for(String arg : args) {
				System.out.println(new TreeInfo().walk(arg,".*"));
			}
		}
	}
	public static class TreeInfo implements Iterable<File>{
		public List<File> files = new ArrayList<File>();//文件
		public List<File> dirs = new ArrayList<File>();//目录
		
		@Override
		public Iterator<File> iterator() {
			// TODO Auto-generated method stub
			return files.iterator();
		}
		void addAll(TreeInfo other) {//加入集合
			files.addAll(other.files);
			dirs.addAll(other.dirs);
		}
		public String toString() {
			return "dirs: " + PPrint.pformat(dirs) + "\n\nfiles: " + PPrint.pformat(files);
		}
		public static TreeInfo walk(String start,String regex) {//文件目录,正则表达式(文件格式)
			return recurseDirs(new File(start),regex);
		}
		private static TreeInfo recurseDirs(File startDir, String regex) {
			// TODO Auto-generated method stub
			TreeInfo result = new TreeInfo();
			for (File item : startDir.listFiles()) {
				if(item.isDirectory()) {//判断是否是目录
					result.dirs.add(item);
					result.addAll(recurseDirs(item, regex));//递归调用自己
				}else {
					if(item.getName().matches(regex))//判断符合正则
						result.files.add(item);
				}
			}
			return result;
		}
	}
}


网友评论    (发表评论)


发表评论:

评论须知:

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


扫码下载

加载中,请稍后...

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

加载中,请稍后...