java中的文件系统爬虫

时间:2016-02-22 03:04:42

标签: java linux windows

我想在java中为Linux和Windows OS设计文件系统爬虫。我是java新手,我正在构建一个应用程序,用于在文件系统中搜索给定文件名的匹配文件。对于Linux,我提出了以下策略,我的算法如下: -

  1. 使用java中的文件open方法打开根目录(“/”)。
  2. 在当前目录中搜索文件名,并在搜索文件成功时记录路径。
  3. 记录当前目录中所有目录的名称
  4. 递归访问每个目录,如果搜索成功,则记录完整路径名。
  5. 访问整个文件系统后,列出结果。
  6. 如何在Windows文件系统(NTFS)中以类似的方式搜索文件?我如何找到根?

    我知道这可能是非常低效的扫描文件的方法,或者我可能会偏离轨道,但请建议方法或发布链接,我可以找到有用的信息来完成我的项目。我找到的一个这样的链接是以下一个: https://docs.oracle.com/javase/tutorial/essential/io/walk.html

    我想知道实现FileVisitorInterface是否正确有效,或者是否存在其他方法来执行我想要的操作。我是java的新手因此我不知道从哪里开始和在哪里看。非常感谢您的所有答案!

1 个答案:

答案 0 :(得分:-1)

我过去曾构建过类似的工具。你所描述的听起来像是一种很好的遍历方法。文件系统毕竟只是一棵树。以递归方式遍历树没有错。如果你正在做一个发现,不能比在O(n)中遍历整个事情做得更好。

对于Windows,您可以获得所有驱动器的列表,例如:

File[] roots = File.listRoots();

你会得到一个类似于[C:\,D:\,E:\,F:\];

的数组

通过遍历,你必须首先确定是否要先进行深度扩展,但由于在找到第一个文件后没有停止遍历,所以选择哪种方法无关紧要。