go语言递归扫描指定目录下文件

go语言递归扫描指定目录下文件,第1张

使用go语言递归查找指定目录下的文件,根据正则匹配筛选出需要的文件,并且忽携前运略指定的目录

先使用 ioutil.ReadDir 遍历出指定目录下的文件,再递归进辩梁目录中遍历,问题的关键在于识别出悔滑文件为目录, fs.FileInfo 中有一个 IsDir() 函数可以识别是否是目录

正则匹配使用 regexp.MatchString ,regexp中有很多正则 *** 作的工具,如根据正则替换字符串中的指定字符

枚举文件即可。

枚举文件实例:

.版本 2

.子程序 枚举文件, , , 递归枚举指定目录下所有文件。

.参数 目录, 文本型, , 枚举文件的目录。

.参数 后缀名, 文本型, 可空, 请以“.*”的格式提供。

.参数 文件列表, 文本型, 参考 数组, 提供一个文本数组变量来保存文件完整路径。

.局部变量 临_目录, 文本型

.局部变量 临_文件, 文本型

.局部变量 i, 整数型, 静态

' 枚举目录

.如果真 (倒找文本 (目录, “\”, , 假) ≠ 取文本长度 (目录))

    目录 = 目录 + “\”  ' 把末尾的斜杠补全。

.如果真结束

清除数组 (文件列表)  ' 删除此句就会在原有基础上再加入成员者旦,所以要清除。

临_目录 = 寻找文件 (目录 + “*”, #子目录)  ' 第一次寻找要提供相应条件。

.判断循环首 (临_目录 ≠ “”)  ' 只要找到的结果不为空,就继续寻找。

    .如果真 (临_目录 ≠ “.” 且 临_目雀燃录 ≠ “..”)  ' 如果不把这两个点过滤掉会无限递归。

        枚举文件 (目录 + 临_目录 + “\”, 后缀名, 文件列表)  ' 递归。

    .如果真结束

    临_目录 = 寻找文件 (, #子目录)  ' 之后,系统会默认使用最近一次提供的条件,进行寻找下一个结果,所以这里只需要指定寻找对象:#子目录。

.判断循环尾 ()

' 枚举文件

临_文件 = 寻找文件 (目录 + “*” + 后缀名, )  ' 第一次寻找要提供相应条件。

.判断循环首 (临_文件 ≠ “”)  ' 只要找到的结果不为空,则继续寻找。

    临_文件 = 目录 + 临_目录 + 临_文件  ' 文件全路径=父目录+当前目录+文件名。

    加入成员顷嫌虚 (文件列表, 临_文件)

    临_文件 = 寻找文件 (, )

.判断循环尾 ()

如果要一个个显示,那么在最后用计次循环就可以实现了。

如有疑问请追问。

思老顷路如下使用递归

public static void de(File f)

{ File [] b = f.listFiles()

//获取包含file对象对应的子目录或者文件

for(int i =0i<b.lengthi++}{

if(b[i].isFile()){

b[i].delete()//判断是否为文件如果是 就删除 }

else{ de(b[i])//否则重新递归卜薯到型含者方法中 }

} f.delete()//最后删除该目录中所有文件后就删除该目录 }


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12369674.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存