zoukankan      html  css  js  c++  java
  • 递归遍历文件夹获取所有文件的绝对路径

    import java.io.File;
    import java.util.HashSet;
    import java.util.Set;
    /**
     * 递归获取所有文件并打印以".txt"格式结尾的文件绝对路径
     * @author Lyle
     * @date 2020/8/26
     */
    public class FileRecursion {
        //使用全局变量保存所有文件路径
        static Set<String> filePaths=new HashSet<>();
        public static void main(String[] args) {
            File file=new File("E:\diguiTest");
            Set<String> filePath = getFilePath(file);
            if (filePath.size()>0){
                for (String fileStr : filePath) {
                    if (fileStr.contains(".txt")){
                        System.out.println(fileStr);
                    }
                }
            }
        }
        public static Set<String> getFilePath(File file){
            File[] files = file.listFiles();
            if (files==null||files.length==0){
                return new HashSet<>();
            }
            for (File file1 : files) {
                if (file1.isDirectory()){
                    //递归调用
                    getFilePath(file1);
                }else {
                    //保存文件路径到集合中
                    filePaths.add(file1.getAbsolutePath());
                }
            }
            return filePaths;
        }
    }

     以上的做法,可以实现功能,但是使用了全局变量,一般的做法中避免使用全局变量,因此可以将全局变量作为参数传进递归调用的方法中,优化后的代码如下:

    import java.io.File;
    import java.util.HashSet;
    import java.util.Set;
    /**
     * 递归获取所有文件并打印以".txt"格式结尾的文件绝对路径
     * @author Lyle
     * @date 2020/8/26
     */
    public class FileRecursion {
        public static void main(String[] args) {
            Set<String> filePaths=new HashSet<>();
            File file=new File("E:\diguiTest");
            Set<String> filePath = getFilePath(file,filePaths);
            if (filePath.size()>0){
                for (String fileStr : filePath) {
                    if (fileStr.contains(".txt")){
                        System.out.println(fileStr);
                    }
                }
            }
        }
        public static Set<String> getFilePath(File file, Set<String> filePaths){
            File[] files = file.listFiles();
            if (files==null||files.length==0){
                return new HashSet<>();
            }
            for (File file1 : files) {
                if (file1.isDirectory()){
                    //递归调用
                    getFilePath(file1, filePaths);
                }else {
                    //保存文件路径到集合中
                    filePaths.add(file1.getAbsolutePath());
                }
            }
            return filePaths;
        }
    }
  • 相关阅读:
    树莓派Raspberry命令行配置无线网络连接
    Gradient Descent
    下载知乎指定问题的答案并保存图片
    获取JQuery UI tabs中被选中的tabs的方法
    VM603:1 Uncaught SyntaxError: Unexpected token o in JSON at position 1
    PHPstorm配置远程及本地服务器
    ubuntu系统搭建samba服务
    centos6.4升级openssh7.4p1
    nginx服务学习第二章
    centos7.2升级openssh7.9p1
  • 原文地址:https://www.cnblogs.com/lyle-liu/p/13563383.html
Copyright © 2011-2022 走看看