如何在Java中使文件search程序?

我想使用适用于Linux和Windows的java进行文件search,我可以为Windows做文件search程序,但是我对Linux毫无头绪。 我正在使用这个逻辑来显示窗口中的所有磁盘。

package test; import java.io.File; public class Test { public static void main(String[] args) { File[] drives = File.listRoots(); String temp = ""; for (int i = 0; i < drives.length; i++) { temp += drives[i]; } String[] dir = temp.split("\\\\"); for (int i = 0; i < dir.length; i++) { System.out.println(dir[i]); } } } 

上面的代码,当在窗口中使用,那么它会显示所有的根,如c:,d:etc和它在Linux中使用它只显示/。 我正在使用这个逻辑来search窗口中的特定文件。

 public void findFile(String name,File file) { File[] list = file.listFiles(); if(list!=null) for (File fil : list) { if (fil.isDirectory()) { findFile(name,fil); } else if (name.equalsIgnoreCase(fil.getName())) { System.out.println(fil.getParentFile()); } } } 

它工作正常,但我的问题是如何使它在Linux中,我是新的Linux,所以我很笨,如何使它,我没有时间,任何帮助将是非常有用的。

在Linux / Unix系统中,只有一个根目录: / 。 从Linux文档:

一切从根目录开始,以/表示,然后扩展到子目录,而不是所谓的“驱动器”。

Java是平台独立的,那么为什么你认为你必须为Linux做一个不同的实现?

Java的平台依赖关系全部由您处理。

从API( http://docs.oracle.com/javase/7/docs/api/java/io/File.html#listRoots(&#xFF09; ):

公共静态文件[] listRoots()

列出可用的文件系统根目录。

一个特定的Java平台可能支持零个或多个分层组织的文件系统。 每个文件系统都有一个根目录,可以访问该文件系统中的所有其他文件。 例如,Windows平台为每个活动驱动器都有一个根目录; UNIX平台有一个单一的根目录,即“/”。 可用文件系统根的集合受到各种系统级操作的影响,例如插入或弹出可移动介质以及断开或卸下物理或虚拟磁盘驱动器。

此方法返回一个File对象数组,表示可用文件系统根的根目录。

而且,您不一定必须使用File.seperator而不是正如File.separator vs Paths中的“斜杠”中所讨论的反斜杠。

但无论如何,这可能是一个好主意。

您需要使用正斜杠而不是反斜杠,使用分割文件

 File.separator 

这应该适用于LinuxWindows

在Linux中,您需要将代码指向“主目录”,因为在Linux操作系统系统根目录中是唯一的。 对于文件搜索,您需要在该目录中进行递归递归,以获得更多的教程。

 http://www.mkyong.com/java/search-directories-recursively-for-file-in-java/