我想使用适用于Linux和Windows的java进行文件搜索,我能够为Windows制作文件搜索程序,但我对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]);
}
}
}
在windows中使用上面的代码然后它将显示所有的根,如c:,d:etc adn,当它在Linux中使用时它只显示/。我正在使用这个逻辑来搜索Windows中的特定文件。
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的新手,所以我无法如何实现它,我的时间不多了,任何帮助对我都非常有用。< / p>
答案 0 :(得分:1)
Java与平台无关,那么为什么你认为你必须为Linux做一个不同的实现呢?
平台依赖关系全部由Java处理。
从API(http://docs.oracle.com/javase/7/docs/api/java/io/File.html#listRoots()):
public static File [] listRoots()
列出可用的文件系统根目录。
特定的Java平台可能 支持零个或多个分层组织的文件系统。每个文件 system有一个根目录,该目录中的所有其他文件 系统可以到达。例如,Windows平台有一个根 每个活动驱动器的目录; UNIX平台只有一个根 目录,即“/”。可用文件系统根的集合是 受到各种系统级操作的影响,例如插入或 可移动介质的弹出和断开或卸下 物理或虚拟磁盘驱动器。
此方法返回一个File对象数组,表示可用文件系统根目录的根目录。
您不必使用File.seperator
代替File.separator vs Slash in Paths中讨论的反斜杠。
但无论如何这样做可能是个好主意......
答案 1 :(得分:1)
您需要使用正斜杠而不是反斜杠,使用
拆分文件File.separator
这应该适用于Linux
和Windows
答案 2 :(得分:0)
在Linux / Unix系统中,只有一个根目录:/
。从Linux文档:
所有内容都从根目录开始,由/表示,然后扩展到子目录,而不是所谓的“驱动器”。
答案 3 :(得分:0)
http://www.mkyong.com/java/search-directories-recursively-for-file-in-java/