如何在java中创建文件搜索程序?

时间:2014-03-02 14:47:04

标签: java linux file java-ee file-io

我想使用适用于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>

4 个答案:

答案 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

这应该适用于LinuxWindows

答案 2 :(得分:0)

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

  

所有内容都从根目录开始,由/表示,然后扩展到子目录,而不是所谓的“驱动器”。

答案 3 :(得分:0)

在Linux中,您需要将代码指向“主目录”,因为在Linux中,os系列根目录只有一个。对于文件搜索,您需要在该目录中指定make recursive,以获得更多本教程的内容。

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