一个没有经过优化的过滤指定目录下的指定扩展名文件的算法

/**过滤符合扩展名条件的文件*/
	static File[] listHtmls(File file){
		File[] fs = file.listFiles(new FileFilter() {
			@Override
			public boolean accept(File f) {
				return compareExtension(f);
			}
		});
		File[] dirs = file.listFiles(new FileFilter() {
			@Override
			public boolean accept(File f) {
				return f.isDirectory();
			}
		});
		
		for(File dir:dirs){
			File[] fs2 = listHtmls(dir);
			int len = fs.length;
			fs = Arrays.copyOf(fs, fs.length+fs2.length);
			System.arraycopy(fs2, 0, fs, len, fs2.length);
		}
		return fs;
	}

  

抽取出来通用的算法

static File[] listFiles(File dir,final String ex){
		File[] fs = dir.listFiles(new FileFilter() {
			@Override
			public boolean accept(File f) {
				return f.getName().endsWith(ex);
			}
		});
		
		File[] dirs = dir.listFiles(new FileFilter() {
			@Override
			public boolean accept(File f) {
				return f.isDirectory();
			}
		});
		
		for(File directory : dirs){
			int len = fs.length;
			File[] ffs = listFiles(directory, ex);
			fs = Arrays.copyOf(fs, fs.length+ffs.length);
			System.arraycopy(ffs, 0, fs, len, ffs.length);
		}
		return fs;
	}

  

原文地址:https://www.cnblogs.com/baby-bear/p/3654078.html