Java 中的文件系统爬虫



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

  1. 使用 java 中的文件 open 方法打开根目录 ("/")。
  2. 在当前目录中搜索文件名,如果搜索成功,则记录路径。
  3. 记录当前目录中所有目录的名称
  4. 归访问每个目录,如果搜索成功,则记录完整路径名。
  5. 访问整个文件系统后,列出结果。

如何以类似的方式在Windows文件系统(NTFS)中搜索文件?如何找到根?

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

我想知道实现FileVisitorInterface是否正确和高效,或者是否存在其他方法可以完成我想要做的事情。我是java的新手,因此我不知道从哪里开始,从哪里看。提前感谢您的所有回答!

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

对于Windows,您可以获取所有驱动器的列表,如下所示:

File[] roots = File.listRoots();

你会得到一个数组,上面有类似 [C:\ , D:\ , E:\ , F:\ ];

使用遍历时,您必须决定是否要先进行深度的广度,但由于您在找到第一个文件后不会停止遍历,因此选择哪种方法并不重要。

最新更新