通过递归查询指定目录下的所有文件和子文件夹下的指定文件名

时间:2021-09-07 22:14:19

递归查询指定目录下的指定文件路径

    自己写了一个简单的小方法,通过递归的方式找到指定目录下,想要的文件,包括目录下和子目录下的所有文件。

package research;

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

/**
 * @author 关世杰
 * @since 2016.9.28
 *
 */
public class ResearchFile {
	
	/**根据文件名和上级目录路径,查找指定文件的绝对路径
	 * @param fileName
	 * @param fileSaveRootPath
	 * @return 文件绝对路径
	 * @throws BusinessException
	 * @author Guan
	 */
	public String findFilePath(String fileName, String fileSaveRootPath) {
		List<String> pathList = new ArrayList<String>();
		researchfile(new File(fileSaveRootPath),fileName,pathList);
		String path = null;
		if(pathList.size()>=1)path = pathList.get(0);
		return path;
	}
	
	
	
	/**根据文件名和上级目录,查找所有该文件的绝对路径
	 * @param file
	 * @param fileName
	 * @param pathList
	 * @author Guan
	 */
	public static void researchfile(File file,String fileName,List<String> pathList) {  
		if (file.isDirectory()) {  
            File[] filearry = file.listFiles(); 
            for (File f : filearry) {  
            	researchfile(f,fileName,pathList);
            }  
        }else{
        	if(file.getName().equals(fileName)){
        		pathList.add(file.getAbsolutePath());
            }
        }
    }  
}