Java-递归-查询某一目录下文件名

来源:互联网 发布:诺基亚软件怎么下载 编辑:程序博客网 时间:2024/05/20 07:58

昨天遇到一道很基础题,查询某一目录下的文件名,如果该文件下还有文件,继续查找文件名,直到没有文件名为止,用树状表示出来。

遇到这道题看到首先想到循环能不能解决问题,但已知总量不知道,所以不能用循环,考虑递归为最优方法。

递归思想就是循环的嵌套,一层调用下一层,直到没有为止。那靠什么决定返回了,Java提供了很好的关键字return解决是否继续进行。

话不多说 ,先贴上代码

package day2;


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


public class Test2 {
// static int n=0;

//为什么递归方法要设置静态的呢?这是因为在静态方法中只能调用静态方法,不能调用非静态方法,如果想调用非静态方法一定要new对象。


public static void LookFile(File myf,int level)

{
String preStr = "";
for(int i=0; i<level; i++) { preStr += "    "; }
//设置变量决定树形空格
System.out.println(preStr+myf.getName());
File[] childs = myf.listFiles();
if(!myf.isDirectory()) return;

//这个return很主要,如果这个文件夹没有就return回去,return在递归中很重要,如果不进行方法调用就return不用返回值就回去了。
for(int i=0; i<childs.length; i++) {
LookFile(childs[i],level+1);

}
  }
public static void main(String[] args) {

   String str="D://eclipse最新//eclipse//eclipse//workspace//MyStudyTest//mydir1";
   File myf=new File(str);
 
   try{
   LookFile(myf, 0);//查看文件夹可能有空情况,出现异常要用catch
   }catch(Exception e){
    System.out.println("没有文件");
   
   }
}
}