在整个计算机中搜索Java中的文件名

有没有办法在整个计算机中搜索表示Java中文件名的String值? 这将是不知道计算机上驱动器的名称。

您可以通过查看文件名,递归地获取内容(如果它是目录等)来遍历文件系统。

如果关键点是如何获取计算机上的驱动器,请查看File.listRoots()函数以获取驱动器号的列表。

ETA:

为了绝对安全,您需要在递归处理中包含一些限制。 可以在文件系统中使用符号链接等进行循环(特别是在LINUX / UNIX中,但第三方工具也可以在Windows中启用此function)。

为了确保在处理符号链接时没有进入循环,请使用File.getCanonicalPath方法获取目录的“真实”路径并跟踪所有访问的规范路径。 您也可以使用getCanonicalFile并跟踪所有文件,但这可能不需要,除非您真的想要避免偶尔会处理同一文件两次的实例。

您可以使用File对象来确定您是在查看文件还是目录:

File file = new File("/"); //root 

然后,当您递归(或根据您的偏好进行迭代)时,您可以进行简单的检查:

 if(tempFile.isDirectory()) //do recursive call on that directory else //perform check on file name 

也不要忘记递归处理中的exception。 由于访问权限限制,某些文件夹可能无法访问。 此外,Windows系统文件夹“系统卷信息”无法在Windows资源管理器中输入,因此我认为如果您尝试进入programmaticaly,它将引发exception。

您可以在整个文件系统中使用递归调用:您可以使用以下java.io.File

  1. listRoots() :列出根文件(在Windows中它是驱动器,在Mac OS X和linux上是’/’)。

  2. listFiles() :列出目录的封闭文件