如何检查循环中文件夹是否为空?

时间:2012-10-25 14:54:15

标签: android for-loop directory is-empty

我有一个问题我知道如何检查文件夹是否为空,但是当我检查文件夹在循环中是否为空时我总是收到错误,这里是我的代码无效的示例。

String sdcard = Environment.getExternalStorageDirectory().toString();
        File file = new File(sdcard);
        File subFiles[] = file.listFiles();
        for(int i=0; i<subFiles.length; i++) {
            File subFile = new File(sdcard +"/"+ subFiles[i].getName());
            if(subFile.isDirectory() && subFile.listFiles().length==0) {

            }
        }

我总是在我的情况下得到错误。

2 个答案:

答案 0 :(得分:5)

这是一个更好的代码版本,它也是一个递归代码,意味着它将搜索存储上的所有空文件夹。实际上,在这里进行空检查不是正确的,因为documentation告诉null仅在file不是目录时才会返回。

public static void traverseEmptyFolders(File root) {
        if (root.isFile()) {
            throw new IllegalArgumentException("Argument should be a directory.");
        }
        for (File file : root.listFiles()) {
            if (file.isDirectory()) {
                File[] contents = file.listFiles(); 
                if (contents == null || contents.length == 0) {
                    // do something for an empty folder
                } else {
                    traverseEmptyFolders(file);
                }
            }
        }
    }

    public static void someOtherMethod() {
        traverseEmptyFolders(Environment.getExternalStorageDirectory());
    }

让我知道这是否有效。

答案 1 :(得分:0)

String sdcard = Environment.getExternalStorageDirectory().toString();
    File file = new File(sdcard);
    File subFiles[] = file.listFiles();
    for(int i=0; i<subFiles.length; i++) {
        File subFile = new File(sdcard +"/"+ subFiles[i].getName());

文件temp [] = subFiles.length;

        if(subFile.isDirectory() && (temp != null && temp.length == 0)) {

        }
    }