递归(进阶)
递归遍历文件中的。txt文件
//只要txt文件 public static void main(String[] args) throws IOException { File file =new File("d:/Auser"); getAllFile(file);//getAllFile:获取所有文件 } /** * 定义一个方法,参数传递File类型的目录 * 方法中对目录进行遍历 * @param dir */ public static void getAllFile(File dir){ File[] files=dir.listFiles(); for (File f :files){ //对遍历得到的File对象f进行判断,是否是文件夹 if (f.isDirectory()){ //f是文件夹,这继续遍历这个文件夹 //我们发现getAllFile方法就是传递文件夹,遍历文件夹得方法 //所以直接调用getAllFile方法即可递归(自己调自己) getAllFile(f); }else { //f是文件夹,直接打印即可 /** * 只要.java结尾的文件 * 1.把File对象f,转为字符串对象 * d:\Auser\c.txt */ // String name =f.getName();//c.txt String path =f.getPath();//d:\Auser\c.txt
path=path.toLowerCase();把字符串都转换为小写,并输出 //2调用String类中的方法endswith判断字符串是否是以.java结尾 boolean b =path.endsWith(".txt"); //3如果是.java结尾的文件,则输出 if (b){ System.out.println(f); } } } }
public static void main(String[] args) throws IOException { File file =new File("d:/Auser"); getAllFile(file);//getAllFile:获取所有文件 } public static void getAllFile(File dir){ File[] files=dir.listFiles(); for (File f :files){ if (f.isDirectory()){ getAllFile(f); }else { String path =f.getPath(); path=path.toLowerCase(); boolean b =path.endsWith(".txt"); if (b){ System.out.println(f); } } } }
链式规则
public static void main(String[] args) throws IOException { File file =new File("d:/Auser"); getAllFile(file);//getAllFile:获取所有文件 } public static void getAllFile(File dir){ File[] files=dir.listFiles(); for (File f :files){ if (f.isDirectory()){ getAllFile(f); }else { if (f.getName().toLowerCase().endsWith(".txt")){ System.out.println(f); } } } }
浙公网安备 33010602011771号