在Java中查找所有驱动器字母

20

我正在处理一个项目,需要在文件系统中查找可执行文件。在UNIX衍生版本中,我假设用户在强大的 $PATH 变量中拥有该文件,但是在Windows上没有这样的变量。

我可以安全地假设该文件最多位于文件系统深度的2级,但我不知道它在哪个驱动器上。我必须尝试所有驱动器,但我无法弄清如何列出所有可用的驱动器(已分配了盘符)。

有什么帮助吗?

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


这可能也很有用,对我来说确实如此。 - user573524
5个回答

39

6
7年后,当在谷歌上搜索“java windows list drives”时,这现在是排名最高的结果。 - earcam

2

到处寻找可能会很混乱。

看看CD-ROM驱动器,它会旋转并发出噪音。

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

对于Windows机器,您应该只需查看开始菜单。如果没有任何指向OOo的东西,那么它可能没有安装。如果已经安装,则用户可能是一个高级用户,可以手动指定位置而不会遇到问题。


4
你认为光盘很吵?你的电脑显然不再有软盘驱动器了。那些才是嘈杂的,即使没有软盘也会发出噪音。 - MSalters

0

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

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

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


-1

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


-2

当然,在Windows中存在一个PATH环境变量

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


我知道有一个%PATH%变量,但它与UNIX系统的集成不同。例如,我正在寻找的应用程序是OpenOffice。这样的软件通常不会在%PATH%中。 - wvdschel

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接