Foxtable(狐表)用户栏目专家坐堂 → 请教查找文件


  共有3248人关注过本帖树形打印复制链接

主题:请教查找文件

帅哥哟,离线,有人找我吗?
有点蓝
  11楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:超级版主 帖子:106081 积分:539504 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2019/1/4 20:39:00 [只看该作者]

比如:
……
vars("todo") = true
Do
    If FindFileData.cFileName.Equals(".") OrElse FindFileData.cFileName.Equals("..") Then Continue Do
    If  searchOption = io.SearchOption.AllDirectories AndAlso ((FindFileData.dwFileAttributes And io.FileAttributes.Directory) = io.FileAttributes.Directory) Then
        EnumerateFiles(io.Path.Combine(path, FindFileData.cFileName))
    Else
        _list.add(io.Path.Combine(path, FindFileData.cFileName))
    End If
    Application.Doevents
Loop While FindNextFile(hFind, FindFileData) AndAlso vars("todo")
if vars("todo")= false then return

停止按钮代码
vars("todo") = false

不过这样为了响应消息循环,搜索会更慢


 回到顶部
帅哥哟,离线,有人找我吗?
hbhb
  12楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:5054 积分:13025 威望:0 精华:0 注册:2014/5/15 21:34:00
  发帖心情 Post By:2019/1/13 21:58:00 [只看该作者]

田大师:为了提高查询某个文件的速度,上面的函数的第二个参数,可否这样?
如果输入了带目录和后缀名的文件,比如:狐表\*.mdb,就首先查找狐表目录,然后再在此目录下查找*.mdb文件。这样是否快多了,如何实现?上面的代码如何更改?

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  13楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/1/13 22:54:00 [只看该作者]

以下是引用hbhb在2019/1/13 21:58:00的发言:
田大师:为了提高查询某个文件的速度,上面的函数的第二个参数,可否这样?
如果输入了带目录和后缀名的文件,比如:狐表\*.mdb,就首先查找狐表目录,然后再在此目录下查找*.mdb文件。这样是否快多了,如何实现?上面的代码如何更改?

 

9楼代码就是这样。


 回到顶部
帅哥哟,离线,有人找我吗?
hbhb
  14楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:5054 积分:13025 威望:0 精华:0 注册:2014/5/15 21:34:00
  发帖心情 Post By:2019/1/13 23:45:00 [只看该作者]

不是吧,FindFirstFile是查找文件吧,我的意思是首先查找到第二个参数的目录部分,目录不是比文件少多了吗?
_list.clear
EnumerateFiles("c:\", "UFSystem1\UFSystem.mdb")
msgbox(_list.count)
为何要很长时间?




 回到顶部
帅哥哟,离线,有人找我吗?
hbhb
  15楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:5054 积分:13025 威望:0 精华:0 注册:2014/5/15 21:34:00
  发帖心情 Post By:2019/1/13 23:57:00 [只看该作者]

一个文件含路径   c:\windows\system32\UFSystem\UFSystem.mdb
为何这样调用
_list.clear
EnumerateFiles("c:\", "windows\system32\UFSystem\UFSystem.mdb")
msgbox(_list.count)
也要一段时间,应该快得很。
也就是说,如果这个参数windows\system32\UFSystem\UFSystem.mdb,目录输入越多,应该越快?越少越慢?

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  16楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/1/14 9:08:00 [只看该作者]

这样调用啊

 

_list.clear
EnumerateFiles("c:\windows\system32\UFSystem\", "*.mdb")
msgbox(_list.count)

 回到顶部
帅哥哟,离线,有人找我吗?
hbhb
  17楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:5054 积分:13025 威望:0 精华:0 注册:2014/5/15 21:34:00
  发帖心情 Post By:2019/1/14 10:34:00 [只看该作者]

知道,我的意思不是这样的,就是有的数据库文件,不知道他的路径,需要搜索,如果搜索*.mdb,时间很长。如果提供*.mdb的目录,搜索时间应该会快一点。也就是倒查。

 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  18楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/1/14 10:51:00 [只看该作者]

以下是引用hbhb在2019/1/14 10:34:00的发言:
知道,我的意思不是这样的,就是有的数据库文件,不知道他的路径,需要搜索,如果搜索*.mdb,时间很长。如果提供*.mdb的目录,搜索时间应该会快一点。也就是倒查。

 

无法理解你的意思。无论你提供什么,都是需要循环每一个目录、每一个文件这样去查的。


 回到顶部
帅哥哟,离线,有人找我吗?
hbhb
  19楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:5054 积分:13025 威望:0 精华:0 注册:2014/5/15 21:34:00
  发帖心情 Post By:2019/1/14 11:12:00 [只看该作者]

那请问,在所有盘中,搜索*.mdb  与搜索UFSystem\UFSystem.mdb的时间是否一样?


 回到顶部
帅哥哟,离线,有人找我吗?
有点甜
  20楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:版主 帖子:85326 积分:427815 威望:0 精华:5 注册:2012/10/18 22:13:00
  发帖心情 Post By:2019/1/14 12:02:00 [只看该作者]

以下是引用hbhb在2019/1/14 11:12:00的发言:
那请问,在所有盘中,搜索*.mdb  与搜索UFSystem\UFSystem.mdb的时间是否一样?

 

基本一样。

 

1、不知道你 UFSystem 在哪个文件夹下,也要全部文件夹一层一层查找;

 

2、UFSystem.mdb 比 *.mdb 好一点,快一点,但影响不大。


 回到顶部
总数 24 上一页 1 2 3 下一页