读条件目录下的所有满足条件的文件(包括子目录)

package io;

import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.regex.Pattern;

/**
 * get the file path
 * @author 
 *
 */
public class GetFile {
	private String regex;
	/**
	 *  pathList is a list of the paths which match the regex
	 */
	public List pathList = new ArrayList();
	public GetFile(String regex) {
		this.regex = regex;
	}
	/**
	 * use pattern to filter the paths
	 * attention:1.当我们要用类似"*"来表示任意的时候,使用".*"("."在java里表示任意字符)
	 * 			 2.想使用"\\"来表示文件符号的时候,需要使用"\\\\"
	 * TODO:these should be relized in the class which read the xml to get the regex
	 * @param path
	 * @return
	 */
	private boolean match(String path) {
		Pattern pattern;
		pattern = Pattern.compile(regex);
		return pattern.matcher(path).matches();
	}
	/**
	 * use a recursion to visit every file in the directory and the sub-directories
	 * @param filePath
	 */
	public void getFileList(String filePath) {
		File path = new File(filePath);
		File[] list;
		list = path.listFiles();
		for (int i = 0; i < list.length; i++) {
			if( list[i].isDirectory()){
				getFileList(list[i].getAbsolutePath());
			} else {
				if (match(list[i].getAbsolutePath())) {
					pathList.add(list[i].getAbsolutePath());
				}
			}
		}
	}
	public static void main(String[] args) {
//		GetFile f = new GetFile(".*.class");
		GetFile f = new GetFile(".*test\\\\.*.java");
		f.getFileList("E:\\opensource\\destroyMaula");
		for(int i=0; i < f.pathList.size(); i++) {
			System.out.println(f.pathList.get(i));
		}
	}
}

你可能感兴趣的:(java,xml,F#,OpenSource)