2

我有如下方法:

public void launch(String cmd, String [] args, String workingDir)

在这个方法中,我调用ProcessBuilder

如何调用 ProcessBuilder,包括我的 args 参数中包含的任意数量的 args?

例如,像这样:

ProcessBuilder pb = new ProcessBuilder(cmd, args);

我注意到 ProcessBuilder 确实有这个构造函数:

ProcessBuilder(List<String> command) 

也许我可以以某种方式使用它。

4

2 回答 2

7

怎么样:

public static void launch(String cmd, String[] args, String workingDir) {
    List<String> strArgs = new ArrayList<String>();
    strArgs.add(cmd);
    strArgs.addAll(Arrays.asList(args));
    ProcessBuilder pb = new ProcessBuilder(strArgs);
}
于 2010-08-03T11:58:24.577 回答
7

ProcessBuilder 有一个varargs构造函数 - ProcessBuilder(String... command)- 所以你可以使用它,但你需要将你的命令和参数放入一个数组中。

否则,您可以使用其他构造函数,如下所示:

List<String> list = new ArrayList<String>(args.length + 1);
list.add(cmd)
list.addAll(Arrays.asList(args));
ProcessBuilder pb = new ProcessBuilder(list);
于 2010-08-03T11:53:37.187 回答