Android如何检查目录中的文件数

时间:2012-10-17 06:21:02

标签: android android-file

我正在设备的内部存储器中创建一个目录,用于存储供应用程序使用的文件。我正在使用:

File dir = context.getDir(userfavorites, Context.MODE_PRIVATE);

如果目录不存在,上面的代码将创建一个新目录,或者如果已经创建了目录,则返回现有的文件对象。我想检查的是该目录包含的文件的编号和名称。如何使用这个文件对象来完成这个任务。

注意:我不想使用设备的外部存储器。我也不能避免创建目录,因为目录中的文件必须与目录中不存在的其他文件分开。

更新代码:

private static boolean IsFoldercontainsFiles(Context context) {
        // TODO Auto-generated method stub
        File dir = context.getDir(USER_FAV, Context.MODE_PRIVATE);
        if (dir.exists()) {
                    if (dir.listFiles() == null){
                     return false;} //it never execute this line even though its null
                    else{
            File childfile[] = dir.listFiles();
            Log.i("file no is ", Integer.toString(childfile.length));
            if (childfile.length == 0) {
                return false;
            } else {
                return true;
            }
                }
        } else {
            return false;
        }
    }

提前致谢

6 个答案:

答案 0 :(得分:10)

检查listFilesFile方法,该方法会为您提供子项列表。

答案 1 :(得分:9)

    File file=new File("/mnt/sdcard/yourfolder");
        File[] list = file.listFiles();
        int count = 0;
        for (File f: list){
            String name = f.getName();
            if (name.endsWith(".jpg") || name.endsWith(".mp3") || name.endsWith(".some media extention"))
               count++;
            System.out.println("170 " + count);
        }

答案 2 :(得分:5)

试试这个

File childfile[] = dir .listFiles();
for (File file2 : childfile) {
    Log.v("file name is ", file2.getName());
}

这里listFiles()返回“dir”的所有子文件,迭代这将帮助你获取子文件的名称

答案 3 :(得分:0)

简单:

File dir = new File(path); // "/mnt/sdcard/yourfolder"

long totalNumFiles = dir.listFiles().length;

答案 4 :(得分:0)

尝试此代码示例以获取目录中的文件数量

private int getNumberOfFiles() throws FileNotFoundException {
    File outFile = new File(outFolder);
    if (!outFile.exists())throw new FileNotFoundException();
    int numberofFiles = outFile.listFiles(new FileFilter() {
        @Override
        public boolean accept(File file) {
            return (file.getPath().startsWith("frame_")&&(file.getPath().endsWith(".jpg")||file.getPath().endsWith(".jpeg")));
        }
    }).length;
    return numberofFiles;
}

答案 5 :(得分:0)

listFiles 类的 File 方法返回一个 File 对象数组,一个对应于目录中的每个文件或目录

可以使用递归查找目录及其子目录中的所有文件。

fun File.getFileCountRecursively(): Int {
    var fileCount = 0

    if (exists() && isDirectory) {
        listFiles()?.forEach { child ->
            fileCount += if (child.isDirectory) child.getFileCountRecursively() else 1
        }
    }

    return fileCount
}