zoukankan      html  css  js  c++  java
  • C#递归读取GIS目录文件格式

    记得学习编程时,递归可以说是一种典型的编程思维,一种常见的需求是遍历目录及子目录中的文件。后来工作时发现,其实微软早就帮我们写好了,不用自己老实去写。

    var files = Directory.GetFiles(@"D:", "*.*",SearchOption.AllDirectories); // 遍历所有文件
    var dirs= Directory.GetDirectories(@"D:", "*", SearchOption.AllDirectories); //遍历所有文件夹
    

    它包括三个参数:

    参数1:文件路径,要搜索的文件目录。

    参数2:过滤格式,不填或"*.*"或"*"表示搜索所有格式;支持通配符号,正则表达式,强大!

    参数3:搜索选项,SearchOption.TopDirectoryOnly 默认选项,仅包含当前目录;SearchOption.AllDirectories 包含所有子目录。

    然后学了还是有用,在GIS中,有一些特殊的格式,如gdb是一种文件夹,gdb内的各种文件并不是我们需要搜索的,这就必须用递归思想去解决。下面结合this和ref写了一个扩展该方法。

    public static void GetFiles(this string directory,ref List<string> list,string searchPattern="*.*")
    {
        if (Directory.Exists(directory))
        {
            string[] directories = Directory.GetDirectories(directory, searchPattern, SearchOption.TopDirectoryOnly);
            string[] files = Directory.GetFiles(directory, searchPattern, SearchOption.TopDirectoryOnly);
            list.AddRange(files);
    
            foreach (string item in directories)
            {
                if (item.ToLower().EndsWith(".gdb"))
                {
                    list.Add(item);
                }
                else
                {
                    GetFiles(item,ref list);
                }
            }
        }
    }
    

  • 相关阅读:
    linux下压缩-解压命令
    配置 samba
    我如何在Linux shell脚本提示输入?
    乔布斯语录
    Oracle 查看表空间及扩容
    Linux添加/删除用户和用户组
    学习进度条
    作业8:单元测试练习(个人练习)
    作业7: 用户体验设计案例分析
    作业6 成绩录入系统设计 阶段一
  • 原文地址:https://www.cnblogs.com/liweis/p/13834191.html
Copyright © 2011-2022 走看看