【问题标题】:How to make file search program in java?如何在java中制作文件搜索程序?
【发布时间】:2014-04-03 10:56:39
【问题描述】:

我想使用适用于 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: 等,而在 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 新手,所以我不知道如何制作它,我的时间不多了,任何帮助都会对我很有帮助。

【问题讨论】:

  • 您需要将代码指向主目录中的查找文件
  • 使用 apache commons.io 库。

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


【解决方案1】:

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 Slash in Paths 中讨论的反斜杠。

但无论如何,这样做可能是个好主意......

【讨论】:

    【解决方案2】:

    您需要使用正斜杠而不是反斜杠,使用

    分割文件
    File.separator
    

    这应该适用于Linux 和Windows

    【讨论】:

    【解决方案3】:

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

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

    【讨论】:

    • @user2058780 谢谢,先生。
    【解决方案4】:

    在 Linux 中,您需要将代码指向“主目录”,因为在 Linux 操作系统家族根目录中只有一个 .对于文件搜索,您需要在该目录中进行递归,以查看本教程的更多内容。

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

    【讨论】:

      猜你喜欢
      • 2016-07-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-12-27
      • 2015-07-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多