本例通过递归方法来实现这一需求,输出所有文件夹路径,以及所有Excel文件名。
给定测试目录: C:\Users\admin\Desktop\递归查找,前提是我们不知道该指定文件夹下有多少个子文件夹以及子文件。
测试目录说明:
该目录下创建了需要测试的两级文件目录、以及按文件夹名创建的.txt .xlsx文件。
首先需要明确目的:根据文件目录、文件夹目录,输出所有文件夹名以及所有Excel文件名,因为无法获知目录深度,所以通过父文件夹层层遍历。
然后进行递归逻辑判断:
找整个递归的终止条件:递归应该在什么时候结束?
找返回值:应该给上一级返回什么信息?
本级递归应该做什么:在这一级递归中,应该完成什么任务?
递归逻辑思考:
1.递归应该在什么时候终止?
应该在所有文件夹遍历后无子文件夹存在时终止。
2.返回值:
子目录下文件及文件夹的长度(个数)
3.本级递归应该完成的任务:
①.判断目录下有无文件:如果有,进行遍历文件目录,判断文件扩展名,符合条件的打印输出。
②.判断目录下有无文件夹,如果有,遍历文件夹目录,打印输出文件夹名。
定义参数Path_Find,初始目录为:C:\Users\admin\Desktop\递归查找
Step1: 判断文件目录长度
if(length>0)不为空,遍历文件目录,判断文件扩展名,打印输出满足条件的文件名。循环结束后,判断文件夹目录;
else为空,判断文件夹目录。
Step2 :判断文件夹目录长度
If(length>0),不为空,遍历文件夹目录,打印子文件夹名。再进行调用自身,继续判断文件目录,不断遍历循环。
Else,为空,不 *** 作。
其中Invoke Workflow File调用自己时,参数Path_Find为子文件夹路径
补充说明:.NET有内置搜索方法,方法见微软官方文档 https://docs.microsoft.com/en-us/dotnet/api/system.io.directory.getdirectories?view=netcore-3.1
Step1 :定义返回搜索文件数组和返回搜索文件夹数组
【注意】该方法不保证返回值的排列顺序,支持通配符"?"和"*",但不支持正则表达式。
Step2 :遍历数组并打印
打印输出结果:
可以发现返回值的排列顺序并不固定,如果需要按一定规则排序,请使用Sort方法。
获取文件夹下的所有文件:
Directory.GetFiles("路径")
获取文件夹下的所有文件夹:
Directory.GetDirectories("路径")
获取文件夹中后缀为".xlsx"的文件:
Directory.GetFiles("路径","*.xlsx")
获取文件所在文件夹:
Path.getDirectoryName(str)
获取文件后缀名 :
Path.getExtension()
获取文件全名 :
Path.getFileName()
获取文件不带后缀的名称 :
Path.getFileNameWithoutExtension()
文件夹下的文件数:
Directory.GetFiles(“路径”).Length
这里仅介绍对表头相同的多个EXCEL进行合并。
1. 用Directory.GetFiles(FilePath)获取FilePath下的所有文件,返回到MergeFile
2. 可以用Write Line试着输出MergeFile下有几个文件,看看对不对,这步可要可不要
3. 用Build Data Table建立一个相同表头的表格模板,输出LastDT
4. 选用For Each,对每个文件进行 *** 作
5. 通过item.ToString,可以把每个文件内容进行读取,Read Range 输出DataTable。注意:这里属性里面的AddHeaders打勾,表示读取数据里面有表头,之后输出时候不输出表头
6. 用Merge Data Table将模板表头和一个个表格数据合并在一起
7. 合并出来的DataTable,可以用Filter Data Table对数据进行筛选(根据自己需求选用)
8. 最后输出合并表格
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)