美文网首页
查找目录下所有文件

查找目录下所有文件

作者: 编程的猫 | 来源:发表于2021-09-27 11:49 被阅读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);
        }
    

    相关文章

      网友评论

          本文标题:查找目录下所有文件

          本文链接:https://www.haomeiwen.com/subject/pcaibltx.html