zoukankan      html  css  js  c++  java
  • [Java] [查找文件] [递归]]

    // 工具方法
    private static FilenameFilter getFilter(final String mode) {
    		return new FilenameFilter() {
    			Pattern pattern;
    			
    			{
    				pattern = Pattern.compile(mode);
    			}
    			
    			public boolean accept(File file, String name) {
    				return pattern.matcher(name).matches();
    			}
    			
    		};
    }
    
    // 调用该接口, 可修改为返回 fs : File[]
    public static void find(File dir) {
    		if (dir.isDirectory()) {
    			File[] tfs = dir.listFiles();
    			// 复制子目录
    			File[] cfs = new File[tfs.length];
    			int count = 0;
    			for (File fs : tfs) {
    				if (fs.isDirectory()) {
    					cfs[count++] = fs;
    				}
    			}
    			// 递归遍历子目录
    			for (int i = 0; i < count; i++) {
    				find(cfs[i]);
    			}
    			// 将该目录下的所有文件夹匹配正则表达式
    			File[] fs = dir.listFiles(getFilter(".+\.java"));
    			/*
    			// 由于需要递归, 所以不能在此创建匿名内部类, 而应使用单例
    			fs = dir.listFiles(
    				new FilenameFilter() {
    					Pattern pattern;
    					
    					// 匿名内部类的构造块
    					{
    						pattern = Pattern.compile(".+\.java");
    					}
    					
    					// 对于一个 File 数组, 将所有元素依次传入该回调函数, 以询问是否同意该元素加入集合, 其中 namne 等价于 f.getName()
    					public boolean accept(File f, String name) {
    						return pattern.matcher(name).matches();
    					}
    			});
    			*/
    			// 打印当前已筛选的文件的全路径
    			for(File f : fs) {
    				try{
    					System.out.println(f.getCanonicalPath());
    				} catch(IOException e) {
    					e.printStackTrace();
    				}
    			}
    		}
    }
    

      

  • 相关阅读:
    使用paramikoHelper类实现MySQL安装和数据恢复
    tornado-模板,转义,上传静态文件
    tornado-请求与响应
    tornado-输入
    tornado-输出,request
    配置Ubuntu虚拟环境
    tornado-简单的服务器非阻塞
    Linux查看进程,端口,访问url
    tornado-简单的服务器
    字符串,数组,定时器,form
  • 原文地址:https://www.cnblogs.com/develon/p/8607809.html
Copyright © 2011-2022 走看看