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;
        }
    }
  • 相关阅读:
    windows蓝屏错误小全
    大数据量下高并发同步的讲解(不看,保证你后悔)
    本地或者服务器同时启动2个或多个tomcat
    如何在同一系统里同时启动多个Tomcat
    Java配置----JDK开发环境搭建及环境变量配置
    Tomcat8内置jdk8运行环境发布web项目
    Tomcat 部署项目的三种方法
    Java Web(五) JSP详解(四大作用域九大内置对象等)
    Java 四大作用域总结
    JSP九大隐式对象
  • 原文地址:https://www.cnblogs.com/lyle-liu/p/13563383.html
Copyright © 2011-2022 走看看