/** * 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)); } } }