查看原文
其他

C#递归读取GIS目录文件格式

GIS前沿 2022-03-16

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

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); } } }}


本文作者:我也是个傻瓜

作者博客地址:http://www.cnblogs.com/liweis/

转载于:地信论坛

本文仅限行业学习交流之用,版权、著作权归原载平台及作者所有。我们尊重作者的成果,如涉嫌侵权,请联系我们及时删除。


 - END -


C# | CAD批量导出多段线节点坐标(附源代码下载)
GIS数据格式汇总解析
在SHP, DWG, DXF, KML/KMZ矢量数据中自由行走
C# | 批量将CAD图幅网格外扩生成新图框(附源代码下载)
C#程序对AutoCAD二次开发(一)

戳原文,更有料!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存