大神,VB问题请教,API遍历查找文件
大神,我想通过Excel的VBA编写一个遍历文件夹的功能具体如下:.我的文件夹下套文件夹,大约有20万个文件夹,约200多万文件。1.能否通过API的方式遍历查找某个文件...
大神,我想通过Excel的VBA编写一个遍历文件夹的功能具体如下:.我的文件夹下套文件夹,大约有20万个文件夹,约200多万文件。
1.能否通过API的方式遍历查找某个文件并把地址返回到excel表中(excel中的VBA我还比较熟悉,VB中的DIR函数遍历太慢了。
2.我想遍历查找判断,这20多万个文件夹中,是否有某个文件夹当前目录下既有文件又有文件夹?(按我们的管理方式和要求,这是不符合规定的)。能否不用DIR函数遍历,相当慢。
大神,如果不是非常耽误你的功夫,希望你能够赐教。 展开
1.能否通过API的方式遍历查找某个文件并把地址返回到excel表中(excel中的VBA我还比较熟悉,VB中的DIR函数遍历太慢了。
2.我想遍历查找判断,这20多万个文件夹中,是否有某个文件夹当前目录下既有文件又有文件夹?(按我们的管理方式和要求,这是不符合规定的)。能否不用DIR函数遍历,相当慢。
大神,如果不是非常耽误你的功夫,希望你能够赐教。 展开
2个回答
展开全部
用API的方式比Dir也快不了多少的,因为目前而言,电脑运行速度的最大瓶颈就是硬盘,不管CPU、主板、内存、显卡有多快,在执行文件操作时都不得不慢下来等待硬盘,所以不管软件编得多好多努力,对速度的提升都不大的。就像几十万辆车要排队过一条小桥,一次只能过一辆,那么即使所有车都是法拉利、保时捷,通过小桥的速度也比几十万台拖拉机甚至牛车快不了多少的!关键是要拓宽桥的宽度,或者多建几座桥,比如把机械硬盘换成固态硬盘,速度就会有明显提升的。
追问
我感觉用DIR的方式查找和操作系统本身的搜索功能,效率还是有很大的差别。如,我用DIR遍历查找某类文件如 *.lsp 进行删除,用dir就非常慢,但是操作系统的搜索就快多了
追答
操作系统的搜索之所以快,是依赖于系统的“索引服务”(Indexing Service)的,原理实际上就是把整个文件系统的信息先存放到一个缓冲文件中,文件系统有变动时,索引服务会自动更新缓冲文件,这样的话,搜索文件实际上就变成直接在缓冲文件中搜索,速度肯定就快了。如果把索引服务关闭,那么操作系统的搜索速度就会立刻降下来了。另一方面,索引服务是有副作用的,就是每次进行文件操作时,硬盘会多转动一段时间(因为索引服务要更新数据),还有就是开机速度明显变慢,所以很多用户(包括我)都是把索引服务关闭的。
你可以试着用api函数来操作索引服务,这个我没用过,你可以百度一下看能否解决。另外,你也可以根据索引服务的原理自己搞一个文件信息缓冲系统(可以是小规模的,比如只针对你指定的文件夹),难点是如何实时跟踪文件信息的变动(增、删、改),这个应该是用钩子拦截系统消息来实现。
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询