【问题标题】:Find all drive letters in Java在 Java 中查找所有驱动器号
【发布时间】:2008-09-09 07:01:14
【问题描述】:

对于我正在进行的项目。我需要在文件系统上寻找可执行文件。对于 UNIX 衍生产品,我假设用户在强大的 $PATH 变量中拥有该文件,但在 Windows 上没有这样的东西。

我可以放心地假设该文件在文件系统中的深度最多为 2 级,但我不知道它将位于哪个驱动器上。我必须尝试所有驱动器,但我不知道如何列出所有可用驱动器(分配了一个字母)。

有什么帮助吗?

编辑:我知道有一个 %PATH% 变量,但它不像 UNIX 系统那样集成。例如,我正在寻找的应用程序是 OpenOffice。此类软件通常不在 %PATH% 中。

【问题讨论】:

标签: java windows


【解决方案1】:

http://docs.oracle.com/javase/7/docs/api/java/io/File.html#listRoots()

File[] roots = File.listRoots();
for(int i = 0; i < roots.length ; i++)
    System.out.println("Root["+i+"]:" + roots[i]);

google:列出驱动 java,第一次点击:-)

【讨论】:

【解决方案2】:

到处寻找可能会很混乱。

看一下 CD-ROM 驱动器,它会旋转起来。这可能会很吵。

查看网络驱动器,它可能非常慢。可能服务器已关闭,您可能需要等待几分钟才能超时。

也许(对于 Windows 机器)您应该只查看开始菜单。如果没有任何东西指向 OOo,它可能没有安装。如果是,用户可能是高级用户,手动指出位置不会有问题。

【讨论】:

  • 您认为 CD 很吵?你的电脑显然没有软盘驱动器了。 那些很吵,即使没有软盘。
【解决方案3】:

Windows 确实有一个 PATH 环境变量。它具有与 Unix 不同的语法,因为它使用分号 (;) 作为分隔符而不是冒号 (:),并且您必须注意可能包含空格的引号字符串。但是,它就在那里。

如果这个其他程序的安装程序将它自己的目录添加到 PATH 环境变量中,那么您可以依赖它。但是,正如您所提到的,Windows 安装程序通常不需要将应用程序路径添加到 PATH,因为它们会安装开始菜单快捷方式或其他东西。

对于 Java 中的驱动器号,一种方法是全部尝试,最多只有 24 个(C 到 Z)有用。或者,您可以运行“net use”并解析结果,尽管这有点混乱。

【讨论】:

    【解决方案4】:

    使用 JNI。 这非常适合 C++ 代码。 您不仅可以列出所有驱动器,还可以获取相应的驱动器类型(可移动,本地磁盘,或cd-rom,dvd-rom...等)

    【讨论】:

      【解决方案5】:

      当然有PATH环境变量in Windows

      %PATH% 此变量包含一个以分号分隔的目录列表,命令解释器将在其中搜索可执行文件。等效于 UNIX $PATH 变量。

      【讨论】:

      • 我知道有一个 %PATH% 变量,但它不像在 UNIX 系统中那样集成。例如,我正在寻找的应用程序是 OpenOffice。此类软件通常不在 %PATH% 中。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-01-06
      • 1970-01-01
      • 2021-04-06
      • 1970-01-01
      相关资源
      最近更新 更多