get number of files in a directory and its subdirectories

后端 未结 12 870
猫巷女王i
猫巷女王i 2020-12-28 09:19

using this code

new File(\"/mnt/sdcard/folder\").listFiles().length

returns a sum of folders and files in a particular directory without ca

12条回答
  •  刺人心
    刺人心 (楼主)
    2020-12-28 10:19

    Just for the record, you may also use iteration instead of recursion:

    public static int countFiles(final File dir) {
        final ArrayDeque dirs = new ArrayDeque<>();
        dirs.add(dir);
        int cnt = 0;
        while (!dirs.isEmpty()) {
            final File[] files = dirs.poll().listFiles();
            for (final File f: files)
                if (f.isDirectory())
                    dirs.add(f);
                else
                    ++cnt;
        }
        return cnt;
    }
    

    In this implementation I'm using ArrayDeque but you can use any Queue or any List for the job.

提交回复
热议问题