c#发展

首页 » 常识 » 问答 » 干货C递归读取GIS目录文件格式
TUhjnbcbe - 2021/3/23 15:50:00
308激光         http://pf.39.net/bdfyy/bjzkbdfyy/190321/6983146.html

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

varfiles=Directory.GetFiles(

"D:\","*.*",SearchOption.AllDirectories);//遍历所有文件vardirs=Directory.GetDirectories(

"D:\","*",SearchOption.AllDirectories);//遍历所有文件夹

它包括三个参数:

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

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

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

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

publicstaticvoidGetFiles(thisstringdirectory,refListstringlist,stringsearchPattern="*.*"){if(Directory.Exists(directory)){string[]directories=Directory.GetDirectories(directory,searchPattern,SearchOption.TopDirectoryOnly);string[]files=Directory.GetFiles(directory,searchPattern,SearchOption.TopDirectoryOnly);list.AddRange(files);foreach(stringitemindirectories){if(item.ToLower().EndsWith(".gdb")){list.Add(item);}else{GetFiles(item,reflist);}}}}

本文作者:我也是个傻瓜

作者博客

1
查看完整版本: 干货C递归读取GIS目录文件格式