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;
        }
    }
  • 相关阅读:
    WPF Attached event
    WPF Progressbar
    IDisposable
    CommandTarget属性
    观察者模式
    DesignerSerializationVisibility, Browsable,Category Attribute
    CVS使用手册
    Javascript原型的简单理解
    由插件独特的处理器产生页面
    教训
  • 原文地址:https://www.cnblogs.com/lyle-liu/p/13563383.html
Copyright © 2011-2022 走看看