日期:2014-05-20  浏览次数:20662 次

用递归遍历目录中的所有文件
代码如下。但是如果给出路径的目录下没有文件,结果不能返回该目录的路径,例如,给出的路径"d:"+File.separator+"text";text是一个空文件夹,运行之后,什么都不显示,而我想要的结果是控制台显示text的路径:d:\text这样子的。
Java code

    public static void main(String[] args) {
        File f=new File("d:"+File.separator);
        fun(f);
    }
    public static void fun(File f){    
        if(f!=null){    
            if(f.isDirectory()){     
                File[] files=f.listFiles();    
                if(files!=null){    
                    for(int i=0;i<files.length;i++){
                        fun(files[i]);    
                    }
                }
            }else{
                System.out.println(f);    
            }
        }
    }




------解决方案--------------------
public static void main(String[] args) {
File f=new File("d:"+File.separator);
fun(f);
}
public static void fun(File f){
if(f!=null){
if(f.isDirectory()){
File[] files=f.listFiles();
if(files!=null){
if(files.length==0) System.out.println(f.getAbsolutePath());
for(int i=0;i<files.length;i++){
fun(files[i]);
}
}
}else{
System.out.println(f);
}
}
}
------解决方案--------------------
f.isDirectory()判断了,只有文件才打印,所以文件夹都不会打印的