DELPHI盒子
!实时搜索: 盒子论坛 | 注册用户 | 修改信息 | 退出
检举帖 | 全文检索 | 关闭广告 | 捐赠
技术论坛
 用户名
 密  码
自动登陆(30天有效)
忘了密码
≡技术区≡
DELPHI技术
lazarus/fpc/Free Pascal
移动应用开发
Web应用开发
数据库专区
报表专区
网络通讯
开源项目
论坛精华贴
≡发布区≡
发布代码
发布控件
文档资料
经典工具
≡事务区≡
网站意见
盒子之家
招聘应聘
信息交换
论坛信息
最新加入: laidabin
今日帖子: 1
在线用户: 2
导航: 论坛 -> DELPHI技术 斑竹:liumazi,sephil  
作者:
男 moom (小新啊) ▲▲▲△△ -
普通会员
2018/2/24 15:02:38
标题:
遍历搜索文件的问题... 浏览:1627
加入我的收藏
楼主: 使用 FindFirst 搜索文件...如搜索 D/E/F盘的文件名为  *文件*.doc

硬盘很多文件夹里面很多文件,而且还有子文件夹...

因为硬盘文件太多,如果我临时暂停执行 FindFirst ..

有没有办法下次我 继续 执行 FindFirst 时,是 从上次 暂停哪儿 开始呢?

如搜索到路径  C:\888\ ,已经搜索过了几千个文件, 到abc.doc ,暂停了..里面还有 几千/几万 个文件还没有搜索.

能否下次继续从  C:\888\abc.doc   开始,而不是重新在 888目录全部重新开始 呢?
----------------------------------------------
谢谢各位大大
作者:
男 abcjingtong (jingtong) ★☆☆☆☆ -
普通会员
2018/2/24 15:13:50
1楼: 暂停时记录一下路径,下次再从上次的路径开始,然后再递归
----------------------------------------------
18114532@qq.com
作者:
男 moom (小新啊) ▲▲▲△△ -
普通会员
2018/2/24 15:23:21
2楼: 这样还是会从当前路径重新开始的....

因同一文件夹内有几万文件,想搜索一半后暂停,然后继续其余的文件...
----------------------------------------------
谢谢各位大大
作者:
男 abcjingtong (jingtong) ★☆☆☆☆ -
普通会员
2018/2/24 15:54:35
3楼: 如果文件数量不变动那就把暂停时的文件序列记一下,如果文件数量变动就把暂时时目录下遍历过的文件名都记录下来,下次遍历时查表看一下是不是找过了
----------------------------------------------
18114532@qq.com
作者:
男 xuchuantao (暗黑天使) ★☆☆☆☆ -
普通会员
2018/2/24 19:32:36
4楼: 开线程然后使用sleep
----------------------------------------------
按此在新窗口浏览图片
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2018/2/24 21:09:07
5楼: 知道为啥函数要带参数?
知道参数干嘛用的?
不过呢,文件搜索你暂停上几个月试试。
你搜索过的路径,早就天差地别了。有必要继续吗?
----------------------------------------------
(C)(P)Flying Wang
作者:
男 jackalan (nVicen) ★☆☆☆☆ -
盒子活跃会员
2018/2/25 9:31:20
6楼: 为什么要暂停呢?
如果短暂暂停可以在线程里做搜索,然后挂起线程。

如果长时间暂停,那你的思路就有问题了。
----------------------------------------------
简单做人,认真做事。
作者:
男 moom (小新啊) ▲▲▲△△ -
普通会员
2018/2/25 18:00:32
7楼: 为什么要暂停....
原因如下:
如多个硬盘有 几十万上百万,甚至千万文件(档案管理)..我要开始搜索,漫长的等待后,如一天..

还是只能搜索其中一部分...我要下班了,关机,

明天继续....还搜索不完..关机..后天继续...

当然,有人说为什么不一直开机.... 
因为搜索过程中,有时候会弹出一些操作需要人为 干预 下 才能继续...
所以不能24小时开机...

谢谢各位...
----------------------------------------------
谢谢各位大大
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2018/2/25 22:07:05
8楼: 终于乐意说需求了。
有了需求,就会有解决方案。
不过呢,你这种需求,没有考虑,每天过程中,产生的新文件,以及被删除的旧文件。
所以,只能说 需求还是不明确。打回去,重新做需求去。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 hujiacheng ( 旺财) ★☆☆☆☆ -
普通会员
2018/2/25 22:26:13
9楼: 按此在新窗口浏览图片
文档内容搜索
文件搜索
都有专业的 pro 下载就是了 。
自己开发的目的?  也许你有特殊癖好。。

外加你的东西可能乱得 无可救药
比如 爬虫。
----------------------------------------------
免费的FTPhttps://download-installer.cdn.mozilla.net/pub/firefox/releases/43.0/win64/zh-CN/https://cc.embarcadero.com/Author/575019>http://delphi-z.ruhttps://download-installer.cdn.mozilla.net/pub/firefox/releases/43.0/win64/zh-CN/https://cc.embarcadero.com/Author/575019>http://delphi.icm.edu.pl/ftp/https://download-installer.cdn.mozilla.net/pub/firefox/releases/43.0/win64/zh-CN/https://cc.embarcadero.com/Author/575019>http://delphi-z.ruhttps://download-installer.cdn.mozilla.net/pub/firefox/releases/43.0/win64/zh-CN/https://cc.embarcadero.com/Author/575019
作者:
男 dbyoung (dbyoung) ★☆☆☆☆ -
普通会员
2018/2/25 23:10:29
10楼: 知道光速搜索吗?
论坛里的大佬/作者/前盛大同事/武稀松(wr960204),
可以出来告诉他如何进行搜索文件。

千万级别的文件搜索,也要不了5分钟。

武大侠还可以顺便告诉你,如何在TListView中显示千万级别的文件,并且界面不卡。
----------------------------------------------
武汉天气不好
作者:
男 kenliaoliao (ben) ★☆☆☆☆ -
普通会员
2018/2/26 9:51:03
11楼: 顶上去。
----------------------------------------------
-
作者:
男 iamdream (银河恒久远,梦想无止境!) ★☆☆☆☆ -
大贡献会员
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 这个新奇特啊.我只需要基本信息...不说了...我去研究下
----------------------------------------------
谢谢各位大大
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2018/2/28 10:10:01
15楼: 楼上的
一个函数你暂停个屁。
人家说的是 暂停线程。
你开一个线程 负责 搜索文件。
然后暂停这个线程。

问题是,这不能关闭程序。不能关机。和你的需求不符。

而且,目前没有符合你需求的设计。再好的搜索工具和设计,都是要求不关机,不关程序的。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 moom (小新啊) ▲▲▲△△ -
普通会员
2018/2/28 10:11:48
16楼: 谢谢楼上..如果达到暂停要求,,,可以不关机....关键人是必须下班的...需求解决不了就要变通了


附注:一般操作这个软件都是在其他人下班后,硬盘文件不会新增修改了...
现在公司要求做 文件档案管理...会把公司几十台电脑硬盘 都搜索 一次...
或许有人说很多产品啊?是的,但基本都达不到要求...
2是如果买软件,老板说要IT部门干啥?
----------------------------------------------
谢谢各位大大
作者:
男 wang_80919 (Flying Wang) ★☆☆☆☆ -
普通会员
2018/2/28 10:37:16
17楼: 既然可以不关机。
那么就你现在的程序,让他运行就行了。
需要交互的,就等着呗。等人上班了,就行了。
完全不需要修改任何代码。
----------------------------------------------
(C)(P)Flying Wang
作者:
男 jackalan (nVicen) ★☆☆☆☆ -
盒子活跃会员
2018/2/28 12:26:46
18楼: 你这个要求必须存储当前搜索表,计算机重启开机后,根据存储的表记录,做增量检查。
----------------------------------------------
简单做人,认真做事。
作者:
男 lsz100 (lsz) ★☆☆☆☆ -
盒子活跃会员
2018/2/28 14:00:02
19楼: 变通一下 你把文件信息保存到数据库表中就行了 然后搜索表就行 平时目录中的文件和数据库表对应就行
----------------------------------------------
我为人人为我
信息
登陆以后才能回复
Copyright © 2CCC.Com 盒子论坛 v3.0.1 版权所有 页面执行74.21875毫秒 RSS