我想在java中为Linux和Windows OS设计文件系统爬虫。我是java新手,我正在构建一个应用程序,用于在文件系统中搜索给定文件名的匹配文件。对于Linux,我提出了以下策略,我的算法如下: -
如何在Windows文件系统(NTFS)中以类似的方式搜索文件?我如何找到根?
我知道这可能是非常低效的扫描文件的方法,或者我可能会偏离轨道,但请建议方法或发布链接,我可以找到有用的信息来完成我的项目。我找到的一个这样的链接是以下一个: https://docs.oracle.com/javase/tutorial/essential/io/walk.html
我想知道实现FileVisitorInterface是否正确有效,或者是否存在其他方法来执行我想要的操作。我是java的新手因此我不知道从哪里开始和在哪里看。非常感谢您的所有答案!
答案 0 :(得分:-1)
我过去曾构建过类似的工具。你所描述的听起来像是一种很好的遍历方法。文件系统毕竟只是一棵树。以递归方式遍历树没有错。如果你正在做一个发现,不能比在O(n)中遍历整个事情做得更好。
对于Windows,您可以获得所有驱动器的列表,例如:
File[] roots = File.listRoots();
你会得到一个类似于[C:\,D:\,E:\,F:\];
的数组通过遍历,你必须首先确定是否要先进行深度扩展,但由于在找到第一个文件后没有停止遍历,所以选择哪种方法无关紧要。