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

时间:2009-06-29 19:51:16

标签: java file search

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

4 个答案:

答案 0 :(得分:6)

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

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

ETA:

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

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

答案 1 :(得分:2)

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

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

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

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

答案 2 :(得分:1)

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

答案 3 :(得分:0)

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

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

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