在Java中查找所有驱动器号

时间:2008-09-09 07:01:15

标签: java windows

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

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

任何帮助?

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

5 个答案:

答案 0 :(得分:36)

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]);

谷歌:列表驱动java,首先命中: - )

答案 1 :(得分:2)

寻找“无处不在”可能会非常混乱。

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

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

也许(对于Windows机器)你应该只看一下开始菜单。如果在OOo没有任何指示,则可能没有安装。如果是,用户可能是高级用户,则手动指出位置没有问题。

答案 2 :(得分:0)

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

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

对于Java中的驱动器号,一种方法是尝试所有这些,只有最多24个(C到Z)才有用。或者,你可以弹出并运行“net use”并解析结果,虽然这有点麻烦。

答案 3 :(得分:-1)

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

答案 4 :(得分:-2)

当然有一个PATH环境变量in Windows

  
    

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