2 cufelsd cufelsd 于 2015.07.14 21:52 提问

以代码为什么不能实现显示文件夹下的所有文件和文件夹??使用了递归


public class hello3 {
    public static void main(String[] args){
        File dir=new File("C:\\Users\\pc\\Desktop\\a");
        outputFile(dir);         
        }
        public static void outputFile(File file){
            File[] aaa=file.listFiles();            
            for(int i=0;i<aaa.length;i++){
                if(aaa[i].isDirectory())
                    {if(aaa[i].length()==0)
                        System.out.println(aaa[i].getName());
                    else
                    outputFile(aaa[i]);}
                else
    System.out.println(aaa[i].getName());       
        }
}
}

5个回答

caozhy
caozhy   Ds   Rxr 2015.07.14 23:00
baidu_27627251
baidu_27627251   2015.07.14 22:05

public static void list(File f){
if(f.exists()){
File fs[]=f.listFiles();
for(File i:fs){
//如果是文件就直接打印名称
if(i.isFile()){
System.out.println(i.getName());
}else{
//如果是目录,就继续迭代
list(i);
}

        }
    }
}
public static void main(String[] args) {        
    File f=new File("E:\\zxy_java");
    list(f);
}
frank_20080215
frank_20080215   2015.07.14 22:02

if(aaa[i].isDirectory())
{if(aaa[i].length()==0)
System.out.println(aaa[i].getName());
else
outputFile(aaa[i]);}
}

改成
if(aaa[i].isDirectory())
{ outputFile(aaa[i]);

                      else
                              System.out.println(aaa[i].getName()) ;}
cufelsd
cufelsd 那如果是空目录怎么办?、
2 年多之前 回复
tongyi55555
tongyi55555   2015.07.15 06:37
public static void main(String[] args) throws ClassNotFoundException,
            InstantiationException, IllegalAccessException,
            IllegalArgumentException, SecurityException,
            InvocationTargetException, NoSuchMethodException {
        File dir = new File("C:\\Users\\");
        outputFile(dir);
    }

    public static void outputFile(File file) {
        File[] aaa = file.listFiles();
        // 需要处理aaa为空的情况,受权限影响无法获取文件夹内的内容,其实是有的,比如系统文件和隐藏文件,不同于空文件夹情况。
        if (aaa == null) {
            return;
        }
        for (int i = 0; i < aaa.length; i++) {
            if (aaa[i].isDirectory()) {
                System.out.println(aaa[i].getAbsolutePath());
                outputFile(aaa[i]);
            } else
                System.out.println("\t--" + aaa[i].getName());
        }
        }
cuiwei1026522829
cuiwei1026522829   Ds   Rxr 2015.07.15 08:52
Csdn user default icon
上传中...
上传图片
插入图片