Foxtable(狐表)用户栏目专家坐堂 → [求助]递归-文件查找报错


  共有2284人关注过本帖平板打印复制链接

主题:[求助]递归-文件查找报错

帅哥哟,离线,有人找我吗?
天一生水
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:五尾狐 帖子:1137 积分:11224 威望:0 精华:0 注册:2017/9/26 16:30:00
[求助]递归-文件查找报错  发帖心情 Post By:2019/10/6 20:32:00 [只看该作者]

老师好!
当查找路径为根目录时(测试实例设置为d:\),报错如图;但关闭报错窗口后,会继续完成查找;
另外,查找范围不是根目录时,不会报错。
请老师看看是自定义函数-“递归”哪里的问题。


图片点击可在新窗口打开查看此主题相关图片如下:100.jpg
图片点击可在新窗口打开查看
 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:递归文件查找(测试).foxdb

代码如下:
自定义函数-递归
Dim path As String = args(0)
Dim ls = args(1)

For Each file As String In FileSys.GetFiles(path)
    Dim finfo As new FileInfo(file)
    If finfo.Hidden = False Then
        ls.add(file)
    End If
Next

For Each p As String In FileSys.GetDirectories(path)
    Functions.Execute("递归", p, ls)
Next


---------------
按钮-查找

'''
e.Form.Controls("TextBox1").text = ""            '先清空
e.Form.Controls("TextBox1").text = "文件查找中......"
Dim count As Integer = 0   '设置计数器
Dim str As String = ""
Dim path As String = e.Form.Controls("TextBox2").text   '文件夹路径
Dim s1 As String = e.Form.Controls("TextBox3").text     '文件名关键字


If path = "" Then
    msgbox("请获取文件夹路径!")
Else
    If s1 <> "" Then
        Dim stt As Date = Date.Now   '开始计时
        Dim lst1 As new List(Of String)
        Functions.Execute("递归" ,path , lst1)
        For Each nm As String In lst1
            If s1 <> "" AndAlso  nm.Contains(s1) Then
                str &= FileSys.GetName(nm) & vbcrlf
                count += 1
            End If            
        Next
        e.Form.Controls("TextBox1").text = "文件查找完毕!" & vbcrlf & "共查找到文件" & count & "个," & "耗时:" & (Date.Now - stt).TotalSeconds & "秒," & vbcrlf & vbcrlf & str
    End If
End If

 回到顶部
总数 12 1 2 下一页