关于Windows:查找Java中的所有驱动器号

关于Windows:查找Java中的所有驱动器号

Find all drive letters in Java

对于一个我正在从事的项目。 我需要在文件系统上寻找可执行文件。 对于UNIX派生类,我假设用户将文件包含在强大的$ PATH变量中,但是Windows上没有这样的东西。

我可以放心地假设该文件在文件系统中最多为2个级别,但是我不知道它将是什么驱动器。 我必须尝试所有驱动器,但无法弄清楚如何列出所有可用的驱动器(已为其分配了字母)。

有什么帮助吗?

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


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

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

谷歌:列表驱动器的Java,第一次命中:-)


看起来"无处不在"可能非常混乱。

查看CD-ROM驱动器,它旋转起来。那可能很吵。

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

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


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

如果该另一个程序的安装程序将其自己的目录添加到PATH环境变量中,则可以依靠该目录。但是,正如您提到的,Windows安装程序通常不需要将应用程序路径添加到PATH,因为它们安装了开始菜单快捷方式或其他方法。

对于Java中的驱动器号,一种方法是尝试所有驱动器号,最多只能使用24个(C到Z)的任何用处。或者,您可以掏空并运行" net use"并解析结果,尽管这有点麻烦。


使用JNI。
这对于C ++代码来说是完美的。
您不仅可以列出所有驱动器,还可以获得相应的驱动器类型(可移动磁盘,本地磁盘或cd-rom,dvd-rom ...等)


当然,Windows中有一个PATH环境变量。

%PATH%
This variable contains a semicolon-delimited list of directories in which the command interpreter will search for executable files. Equivalent to the UNIX $PATH variable.


推荐阅读