当前位置:  开发笔记 > 编程语言 > 正文

如何快速查找添加/删除的文件?

如何解决《如何快速查找添加/删除的文件?》经验,为你挑选了2个好方法。

我正在编写一个小程序,它创建了我目录中所有文件的索引.它基本上遍历磁盘上的每个文件并将其存储到可搜索的数据库中,就像Unix的locate一样.问题是,由于我有大约一百万个文件,因此索引生成非常慢.

生成索引后,是否可以快速找到自上次运行以来在磁盘上添加或删除的文件?

编辑:我不想监视文件系统事件.我认为风险太高而无法实现同步,我更喜欢快速重新扫描,以便快速找到添加/删除文件的位置.也许目录上次修改日期或其他什么?

一个小基准

我刚做了一点基准.运行

dir /b /s M:\tests\  >c:\out.txt

需要0.9秒,并提供我需要的所有信息.当我使用Java实现(很像这样)时,大约需要4.5秒.任何想法如何改善至少这种蛮力的方法?

相关文章:如何查看目录的子文件是否已更改



1> Stewart Robi..:

你能跳出java吗?

你可以简单地使用

dir /b /s /on M:\tests\  

/按名称排序

如果你把它输出到out.txt

然后在上次以Java或批处理文件运行此文件时执行diff操作.在Dos中有类似的东西.你需要得到一个diff工具,在cygwin中的diff或者优秀的http://gnuwin32.sourceforge.net/packages/diffutils.htm

dir /b /s /on m:\tests >new.txt
diff new.txt archive.txt >diffoutput.txt
del archive.txt
ren new.txt archive.txt

显然你也可以使用java diff类,但我认为接受的是shell命令几乎总是在文件列表操作中击败Java.



2> krosenvold..:

不幸的是,没有标准的方法来监听java中的文件系统事件.这可能是在java7中出现的.

目前,您必须谷歌"java文件系统事件"并选择与您的平台匹配的自定义实现.

推荐阅读
mobiledu2402852357
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有