• 递归遍历文件夹获取所有文件的绝对路径


    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;
        }
    }
  • 相关阅读:
    Socket的应用案例
    利用XStream实现对象XML话
    策略模式
    深入理解Java引用类型
    java 消息机制 ActiveMQ入门实例
    activity工作流表结构分析
    Spring MVC 之 Hello World
    如何发布Web项目到互联网
    ionic开发ios app
    ionic开发android app步骤
  • 原文地址:https://www.cnblogs.com/lyle-liu/p/13563383.html
Copyright © 2020-2023  润新知