|
|
导航: |
论坛 -> DELPHI技术
斑竹:liumazi,sephil |
|
作者: |
moom (小新啊) |
▲▲▲△△ |
-
|
普通会员 |
|
2018/2/24 15:02:38 |
标题: |
|
加入我的收藏 |
楼主: |
使用 FindFirst 搜索文件...如搜索 D/E/F盘的文件名为 *文件*.doc
硬盘很多文件夹里面很多文件,而且还有子文件夹...
因为硬盘文件太多,如果我临时暂停执行 FindFirst ..
有没有办法下次我 继续 执行 FindFirst 时,是 从上次 暂停哪儿 开始呢?
如搜索到路径 C:\888\ ,已经搜索过了几千个文件, 到abc.doc ,暂停了..里面还有 几千/几万 个文件还没有搜索.
能否下次继续从 C:\888\abc.doc 开始,而不是重新在 888目录全部重新开始 呢?
----------------------------------------------
谢谢各位大大 |
作者: |
|
2018/2/24 15:13:50 |
1楼: |
暂停时记录一下路径,下次再从上次的路径开始,然后再递归
----------------------------------------------
18114532@qq.com
|
作者: |
moom (小新啊) |
▲▲▲△△ |
-
|
普通会员 |
|
2018/2/24 15:23:21 |
2楼: |
这样还是会从当前路径重新开始的....
因同一文件夹内有几万文件,想搜索一半后暂停,然后继续其余的文件...
----------------------------------------------
谢谢各位大大
|
作者: |
|
2018/2/24 15:54:35 |
3楼: |
如果文件数量不变动那就把暂停时的文件序列记一下,如果文件数量变动就把暂时时目录下遍历过的文件名都记录下来,下次遍历时查表看一下是不是找过了
----------------------------------------------
18114532@qq.com
|
作者: |
|
2018/2/24 19:32:36 |
4楼: |
开线程然后使用sleep
----------------------------------------------
|
作者: |
|
2018/2/24 21:09:07 |
5楼: |
知道为啥函数要带参数? 知道参数干嘛用的? 不过呢,文件搜索你暂停上几个月试试。 你搜索过的路径,早就天差地别了。有必要继续吗?
----------------------------------------------
(C)(P)Flying Wang
|
作者: |
|
2018/2/25 9:31:20 |
6楼: |
为什么要暂停呢? 如果短暂暂停可以在线程里做搜索,然后挂起线程。
如果长时间暂停,那你的思路就有问题了。
----------------------------------------------
简单做人,认真做事。
|
作者: |
moom (小新啊) |
▲▲▲△△ |
-
|
普通会员 |
|
2018/2/25 18:00:32 |
7楼: |
为什么要暂停.... 原因如下: 如多个硬盘有 几十万上百万,甚至千万文件(档案管理)..我要开始搜索,漫长的等待后,如一天..
还是只能搜索其中一部分...我要下班了,关机,
明天继续....还搜索不完..关机..后天继续...
当然,有人说为什么不一直开机.... 因为搜索过程中,有时候会弹出一些操作需要人为 干预 下 才能继续... 所以不能24小时开机...
谢谢各位...
----------------------------------------------
谢谢各位大大
|
作者: |
|
2018/2/25 22:07:05 |
8楼: |
终于乐意说需求了。 有了需求,就会有解决方案。 不过呢,你这种需求,没有考虑,每天过程中,产生的新文件,以及被删除的旧文件。 所以,只能说 需求还是不明确。打回去,重新做需求去。
----------------------------------------------
(C)(P)Flying Wang
|
作者: |
|
2018/2/25 23:10:29 |
10楼: |
知道光速搜索吗? 论坛里的大佬/作者/前盛大同事/武稀松(wr960204), 可以出来告诉他如何进行搜索文件。
千万级别的文件搜索,也要不了5分钟。
武大侠还可以顺便告诉你,如何在TListView中显示千万级别的文件,并且界面不卡。
----------------------------------------------
武汉天气不好
|
作者: |
|
2018/2/26 9:51:03 |
11楼: |
顶上去。
----------------------------------------------
-
|
作者: |
|
2018/2/26 19:55:26 |
12楼: |
楼主这个恐怕得用NoSQL数据库了……
----------------------------------------------
-广袤璀璨的银河,永无止境的梦想(梦无止境游银河) 博客挂了……
|
作者: |
vkow (vkow) |
★☆☆☆☆ |
-
|
普通会员 |
|
2018/2/27 15:52:12 |
13楼: |
这个帖子很热闹啊。 我也凑凑热闹。 1. 至于楼主说的暂停。甚至想重启计算机恢复搜索。 我知道的情况如下: 在你应用程序一直运行的情况下,利用FindFirstFile是可以暂停的。暂停多长时间都可以,恢复运行是从你暂停的地方继续执行的。至于文件的时效性,取决于你函数运行当时的情况。 你计算机重启的问题,取决于你应用程序是否退出释放了资源。如果释放了,那就无法恢复了。如何重启不关闭应用程序,参考win10的睡眠、或休眠功能。
2.如果文件太多的话,而你只是获取文件基本信息,如文件名、属性、时间等,并且是NTFS的格式,正确方法是利用主文件表(MFT)技术。自己百度吧。对于千万级的,也是分分钟的事情。
3. 如果你就想利用Find函数,推荐用FindFirstFileEx比较好使。方法也不是没有,我的思路如下: 不是仅用一个Find根目录,而且分批次Find; 每一级目录获取后,做文件和目录区分,将目录按文件名排序。 应用退出时,Find完当前目录即可。将当前的目录的列表(所有父级 ..)列表保存即可。下次根据保存的目录列表和完成的情况恢复,继续搜索即可。
4. 另外,可能会带坏你。教你一个邪招。如果你只想获取文件基本信息。 你又不想研究MFT,可以利用外部命令dir来完成。之后,获取dir的结果,分割字符串。效果比你用Find函数快。千万级的也用不了一个小时。
----------------------------------------------
-
|
作者: |
moom (小新啊) |
▲▲▲△△ |
-
|
普通会员 |
|
2018/2/28 10:07:29 |
14楼: |
哇...谢谢楼上...简直.......... 1:请问FindFirstFile 如何暂停? 网上搜索不到....如果可以暂停就基本解决我的问题... 2:估计我水平可能搞不了... 3:我会研究下 FindFirstFileEx...一开始分开目录来做似乎不错,不过我是不知道硬盘目录结构的.如果有时间做硬盘目录分析,估计我也搜索完了... 4:dir 这个新奇特啊.我只需要基本信息...不说了...我去研究下
----------------------------------------------
谢谢各位大大
|
作者: |
|
2018/2/28 10:10:01 |
15楼: |
楼上的 一个函数你暂停个屁。 人家说的是 暂停线程。 你开一个线程 负责 搜索文件。 然后暂停这个线程。
问题是,这不能关闭程序。不能关机。和你的需求不符。
而且,目前没有符合你需求的设计。再好的搜索工具和设计,都是要求不关机,不关程序的。
----------------------------------------------
(C)(P)Flying Wang
|
作者: |
moom (小新啊) |
▲▲▲△△ |
-
|
普通会员 |
|
2018/2/28 10:11:48 |
16楼: |
谢谢楼上..如果达到暂停要求,,,可以不关机....关键人是必须下班的...需求解决不了就要变通了
附注:一般操作这个软件都是在其他人下班后,硬盘文件不会新增修改了... 现在公司要求做 文件档案管理...会把公司几十台电脑硬盘 都搜索 一次... 或许有人说很多产品啊?是的,但基本都达不到要求... 2是如果买软件,老板说要IT部门干啥?
----------------------------------------------
谢谢各位大大
|
作者: |
|
2018/2/28 10:37:16 |
17楼: |
既然可以不关机。 那么就你现在的程序,让他运行就行了。 需要交互的,就等着呗。等人上班了,就行了。 完全不需要修改任何代码。
----------------------------------------------
(C)(P)Flying Wang
|
作者: |
|
2018/2/28 12:26:46 |
18楼: |
你这个要求必须存储当前搜索表,计算机重启开机后,根据存储的表记录,做增量检查。
----------------------------------------------
简单做人,认真做事。
|
作者: |
|
2018/2/28 14:00:02 |
19楼: |
变通一下 你把文件信息保存到数据库表中就行了 然后搜索表就行 平时目录中的文件和数据库表对应就行
----------------------------------------------
我为人人为我
|
|