查找目录下所有文件

2021-09-27  本文已影响0人  编程的猫

非递归,层序遍历的方法

 /**
     * 遍历文件,非递归方式
     *
     * @param path path
     */
    public void ergodic1(String path) {
        // 记录文件数量和文件夹数量
        int fileNum = 0, foldNum = 0;

        File file = new File(path);
        if (file.exists()) {

            if (null == file.listFiles()) {
                System.out.println("文件:" + file.getAbsolutePath());
                fileNum++;
                System.out.println("文件的数量:" + fileNum + "; 文件夹的数量:" + foldNum);
                return;
            }

            LinkedList<File> linkedList = new LinkedList<>();
            // 将文件添加到list
            linkedList.addAll(Arrays.asList(file.listFiles()));

            while (!linkedList.isEmpty()) {
                // 从集合中移除第一个文件file
                File[] files = linkedList.removeFirst().listFiles();
                if (files == null) {
                    continue;
                }


                for (File file1 : files) {
                    if (file1.isDirectory()) {
                        linkedList.add(file1);
                        System.out.println("文件夹:" + file1.getAbsolutePath());
                        foldNum++;
                    } else {
                        System.out.println("文件:" + file1.getAbsolutePath());
                        fileNum++;
                    }
                }

            }
        } else {
            System.out.println("文件不存在");
        }

        System.out.println("文件的数量:" + fileNum + "; 文件夹的数量:" + foldNum);
    }

递归查找

 /**
     * 递归方式遍历file
     */
    public void recursionErgodicFile(String path) {
        int fileNum = 0, foldNum = 0;

        File file = new File(path);
        if (file.exists()) {
            if (null == file.listFiles()) {
                fileNum++;
                System.out.println("文件:" + file.getAbsolutePath());
                System.out.println("文件的数量:" + fileNum + " ; 文件夹的数量:" + foldNum);
                return;
            }

            for (File listFile : file.listFiles()) {
                if (listFile.isDirectory()) {
                    foldNum++;
                    System.out.println("文件夹:" + listFile.getAbsolutePath());
                    // 递归调用
                    recursionErgodicFile(listFile.getAbsolutePath());
                } else {
                    fileNum++;
                    System.out.println("文件:" + file.getAbsolutePath());
                }
            }
        } else {
            System.out.println("文件不存在");
        }

        System.out.println("文件的数量:" + fileNum + " ; 文件夹的数量:" + foldNum);
    }
上一篇下一篇

猜你喜欢

热点阅读