我想使用适用于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() ):
公共静态文件[] listRoots()
列出可用的文件系统根目录。
一个特定的Java平台可能支持零个或多个分层组织的文件系统。 每个文件系统都有一个根目录,可以访问该文件系统中的所有其他文件。 例如,Windows平台为每个活动驱动器都有一个根目录; UNIX平台有一个单一的根目录,即“/”。 可用文件系统根的集合受到各种系统级操作的影响,例如插入或弹出可移动介质以及断开或卸下物理或虚拟磁盘驱动器。
此方法返回一个File对象数组,表示可用文件系统根的根目录。
而且,您不一定必须使用File.seperator
而不是正如File.separator vs Paths中的“斜杠”中所讨论的反斜杠。
但无论如何,这可能是一个好主意。
您需要使用正斜杠而不是反斜杠,使用分割文件
File.separator
这应该适用于Linux
和Windows
在Linux中,您需要将代码指向“主目录”,因为在Linux操作系统系统根目录中是唯一的。 对于文件搜索,您需要在该目录中进行递归递归,以获得更多的教程。
http://www.mkyong.com/java/search-directories-recursively-for-file-in-java/