15

我可以使用打印路径System.getenv("PATH")。然后我可能可以遍历这些路径并用于File检查文件是否存在。

Java中有更快的方法吗?

4

3 回答 3

4

Java中有更快的方法吗?

就性能而言,没有。

就编码工作而言,可能没有。当然,我不知道有任何第 3 方 Java 库会搜索命令搜索路径以查看是否存在可执行文件。

不幸的是,在 Windows 上搜索可执行文件有点棘手,因为您必须考虑各种类型的可执行文件……基于文件后缀。即使在 Linux / Unix 上,您也需要使用新的 Java 7 文件属性 API 来确定候选文件是否具有执行权限集。

(我知道某些命令可以以无害的方式运行;例如,它们可能支持输出版本字符串或一些帮助信息的选项/参数。但是,这只适用于特定情况。我也知道在 Unix / Linux 上,有一个名为“whereis”的内置 shell 命令可以告诉您搜索路径中是否存在具有给定名称的可执行命令。)

于 2013-03-20T13:23:12.337 回答
4

您可以Runtime.getRuntime().exec("command");try ... catch部分中使用。如果应用程序不存在,PATH您将获得异常。

[编辑]

但是..这将执行应用程序而不是检查。对不起。

于 2013-03-20T13:00:31.790 回答
3

你的方法会奏效。

我建议对路径中的每个目录使用File.listFiles(FileFilter filter)方法。这将使搜索每个目录更简单。

于 2013-03-20T13:10:51.797 回答