gpt4 book ai didi

用于查找可执行文件的 Java 库

转载 作者:行者123 更新时间:2023-12-01 14:19:53 26 4
gpt4 key购买 nike

我正在使用 ProcessBuilder 类在 Windows 和 Linux 上执行可执行文件。

有没有一种简单的方法可以在不知道可执行文件的目录路径的情况下找到这些可执行文件。

例如

//which command functionality
String executable = which("executable_name");

List<String> command = new ArrayList<String>();
command.add(executable);
ProcessBuilder builder = new ProcessBuilder(command);
..
..

如果linux上有一个类似which命令的功能就好了?

任何想法或者我是否必须使用

循环并解析 PATH 环境变量
System.getenv("PATH");

最佳答案

在 Windows 上使用 where 命令。

WHERE [/R dir] [/Q] [/F] [/T] pattern

如果未使用 /R 指定搜索目录,它将搜索当前目录以及 PATH 环境变量指定的路径。下面是一个示例代码,用于查找 notepad.exe 在 Windows 上驻留的两个位置。

String searchCmd;
if (System.getProperty("os.name").contains("Windows")) {
searchCmd = "where";
} else { // I'm assuming Linux here
searchCmd = "which";
}

ProcessBuilder procBuilder = new ProcessBuilder(searchCmd, "notepad.exe");
Process process = procBuilder.start();

ArrayList<String> filePaths = new ArrayList<String>();
Scanner scanner = new Scanner(process.getInputStream());
while (scanner.hasNextLine()) {
filePaths.add(scanner.nextLine());
}
scanner.close();

System.out.println(filePaths);

输出:

[C:\Windows\System32\notepad.exe, C:\Windows\notepad.exe]

注意:我只在 Windows 上对此进行了测试。您可能需要修改(可能是命令选项和解析输出的方式)才能使其在 Linux 上运行。

关于用于查找可执行文件的 Java 库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17703794/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com