我正在为一个项目工作。 我需要在文件系统上寻找一个可执行文件。 对于UNIX衍生产品,我假设用户在$ PATHvariables中有文件,但Windows上没有这种东西。
我可以安全地假定该文件最多只能进入文件系统2层,但是我不知道驱动器是什么。 我必须尝试所有的驱动器,但我不知道如何列出所有可用的驱动器(其中有一个字母分配给它)。
任何帮助?
编辑:我知道有一个%PATH%variables,但它不像在UNIX系统集成。 例如,我正在寻找的应用程序是OpenOffice。 这样的软件通常不会在%PATH%中。
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,首先命中:-)
展望“到处”可以是非常混乱。
看一下CD-ROM驱动器,它就会旋转起来。 这可能是非常嘈杂。
看看网络驱动器,它可能会很慢。 也许服务器关闭,你可能需要等待几分钟,直到超时。
也许(对于Windows机器),你应该看看开始菜单。 如果OOo中没有任何内容,则可能没有安装。 如果是,用户可能是高级用户,手动指出位置没有问题。
Windows确实有一个PATH环境变量。 它与Unix有不同的语法,因为它使用分号(;)作为分隔符而不是冒号(:),并且必须注意可能包含空格的引号字符串。 但是,它在那里。
如果这个其他程序的安装程序将自己的目录添加到PATH环境变量,那么你可以依靠这个。 但是,正如您所提到的,Windows安装程序通常不需要将应用程序路径添加到PATH,因为它们安装了开始菜单快捷方式或其他内容。
对于Java中的驱动器盘符,一种方法是尝试所有的方法,只有最多24(C到Z)的任何用途。 或者,你可以掏出并运行“净使用”和解析结果,虽然这有点混乱。
使用JNI。 这是完美的C + +代码。 不仅可以列出所有驱动器,而且还可以获取相应的驱动器类型(可移动,本地磁盘或光盘,DVD-ROM等)
当然在Windows中有一个PATH
环境变量。
%PATH%
此变量包含以分号分隔的目录列表,其中命令解释程序将搜索可执行文件。 相当于UNIX $ PATH变量。