8

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

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;
        }
    }

提前致谢

4

6 回答 6

12

检查listFiles方法File会给你孩子的名单。

于 2012-10-17T06:24:59.750 回答
11
    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);
        }
于 2014-07-09T07:20:40.927 回答
5

尝试这个

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

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

于 2012-10-17T06:38:04.677 回答
3

简单的:

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

long totalNumFiles = dir.listFiles().length;
于 2017-09-18T11:37:16.153 回答
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;
}
于 2018-12-22T08:08:49.063 回答
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
}
于 2021-04-01T07:25:33.887 回答