VB.NET新手求助文件遍历及文件夹名称,文件数量、类型的问题

[复制链接]
查看11 | 回复10 | 2021-1-27 05:48:43 | 显示全部楼层 |阅读模式
各位大大好:
由于工作需要,小白一枚需要用vb.net编一个小软件,该软件功能为:遍历一个文件夹中的所有子文件夹及子文件夹里的文件,按文件存在的子文件夹位置,获得该文件夹中不同类型的文件个数。
比如:有个文件夹(名为“a”),a中有一个二级子文件夹(名为“b”),同时还有个c.txt文件、h.doc文件,即b、c、h都为二级文件,b中又有名为d的三级子文件夹和e.doc文件、f.doc文件,即d、e、f都为三级文件,d中含有g.xls文件,即g为四级文件。现在需要对a进行遍历,希望得到的结果是一个txt文本,如下
一、b
1、d
(1)xls文件,共1个
2、doc文件,共2个
二、txt文件,共1个
三、doc文件,共1个
规则为:遇到文件夹要提取名称,遇到文件提取文件类型,统计具有相同类型的文件个数(在同一级目录下)
求大神给点参考的代码,新手万分感激,谢谢。
分 -->
回复

使用道具 举报

千问 | 2021-1-27 05:48:43 | 显示全部楼层
txt中第一层的一、二、三还好办,下面子目录的就不好办了,如果子目录有个7,8层,符号怎么分割,还不如通过缩进的方式来区分是哪一层目录
通过System.IO.Directory.GetFiles("")来获取目录下的所有文件,
然后通过DimfileAsSystem.IO.FileInfo
file.Extension后缀来确认是什么类型文件
通过DimdirAsSystem.IO.DirectoryInfo
dir.GetDirectories()来获取子目录,后面就是递归遍历的事情了
回复

使用道具 举报

千问 | 2021-1-27 05:48:43 | 显示全部楼层
好复杂的问题,我也来看看
回复

使用道具 举报

千问 | 2021-1-27 05:48:43 | 显示全部楼层
https://msdn.microsoft.com/zh-cn/library/c1sez4sc(v=vs.110).aspx
回复

使用道具 举报

千问 | 2021-1-27 05:48:43 | 显示全部楼层
引用1楼starfd的回复:txt中第一层的一、二、三还好办,下面子目录的就不好办了,如果子目录有个7,8层,符号怎么分割,还不如通过缩进的方式来区分是哪一层目录
通过System.IO.Directory.GetFiles("")来获取目录下的所有文件,
然后通过DimfileAsSystem.IO.FileInfo
file.Extension后缀来确认是什么类型文件
通过DimdirAsSystem.IO.DirectoryInfo
dir.GetDirectories()来获取子目录,后面就是递归遍历的事情了

大神求问,你的意思是我通过System.IO.Directory.GetFiles("")来获取目录下的所有文件,
然后判定,1.如果是文件,则用DimfileAsSystem.IO.FileInfo
file.Extension后缀来确认是什么类型文件,用数组方式记录有几种不同类型,同时用对应数组
计数。
2、如果是文件,通过DimdirAsSystem.IO.DirectoryInfo
dir.GetDirectories()来获取子目录,同时获得文件名称,然后继续通过
System.IO.Directory.GetFiles("")来获取目录下的所有文件,重复上一个过程
有几个问题请问下大神,我用dir.GetDirectories()还有文件路径,我只想要文件名称,怎么办到?
如果向您说的,通过缩进的方式来区分是哪一层目录,怎么办?谢谢
回复

使用道具 举报

千问 | 2021-1-27 05:48:43 | 显示全部楼层
1、Directory.GetFiles取到的就是文件
2、System.IO.Directory.GetDirectories()取到的就是文件夹,
3、递归遍历取文件和文件夹的过程
FileInfofi;fi.Name这就是文件名,也可以通过System.IO.Path.GetFileName、.Path.GetFileNameWithoutExtension来获取文件名
缩进就是在每行增加空格或者Tab

回复

使用道具 举报

千问 | 2021-1-27 05:48:43 | 显示全部楼层
引用5楼starfd的回复:1、Directory.GetFiles取到的就是文件
2、System.IO.Directory.GetDirectories()取到的就是文件夹,
3、递归遍历取文件和文件夹的过程
FileInfofi;fi.Name这就是文件名,也可以通过System.IO.Path.GetFileName、.Path.GetFileNameWithoutExtension来获取文件名
缩进就是在每行增加空格或者Tab

那意思是用Directory.GetFiles获取文件,然后判定类型,用数组记录并计数,在txt中显示
然后用System.IO.Directory.GetDirectories()获取同一级的文件夹,System.IO.Path.GetFileName
得到文件夹名,放入txt中
接下来用递归遍历,放入txt的时候用相关层级+空格的方式缩进放入?
回复

使用道具 举报

千问 | 2021-1-27 05:48:43 | 显示全部楼层
恩,是的


回复

使用道具 举报

千问 | 2021-1-27 05:48:43 | 显示全部楼层
整个取文件夹和文件的过程都是递归遍历
回复

使用道具 举报

千问 | 2021-1-27 05:48:43 | 显示全部楼层
引用7楼starfd的回复:恩,是的


谢谢大神,我明天回公司写一下代码,看下,谢谢啊
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

主题

0

回帖

4882万

积分

论坛元老

Rank: 8Rank: 8

积分
48824836
热门排行