Java-如何给方法一个数组

Java-如何给方法一个数组,java,methods,processbuilder,Java,Methods,Processbuilder,我有如下方法: public void launch(String cmd, String [] args, String workingDir) 在这个方法中,我调用 如何调用ProcessBuilder,包括我的args参数中包含的任意数量的args 例如,类似这样的事情: ProcessBuilder pb = new ProcessBuilder(cmd, args); 我注意到ProcessBuilder确实有这样一个构造函数: ProcessBuilder(List<Str

我有如下方法:

public void launch(String cmd, String [] args, String workingDir)
在这个方法中,我调用

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

例如,类似这样的事情:

ProcessBuilder pb = new ProcessBuilder(cmd, args);
我注意到ProcessBuilder确实有这样一个构造函数:

ProcessBuilder(List<String> command) 
ProcessBuilder(列表命令)
也许我可以用它。

ProcessBuilder有一个构造函数-
ProcessBuilder(字符串…命令)
-所以你可以使用它,但是你需要把你的命令和参数放在一个数组中

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

List<String> list = new ArrayList<String>(args.length + 1);
list.add(cmd)
list.addAll(Arrays.asList(args));
ProcessBuilder pb = new ProcessBuilder(list);
List List=newarraylist(args.length+1);
list.add(cmd)
addAll(Arrays.asList(args));
ProcessBuilder pb=新的ProcessBuilder(列表);
那么:

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);
}
publicstaticvoidlaunch(字符串cmd,字符串[]args,字符串workingDir){
List strArgs=new ArrayList();
strArgs.add(cmd);
addAll(Arrays.asList(args));
ProcessBuilder pb=新的ProcessBuilder(strArgs);
}

是的,您可以按照下面的答案使用该构造函数。您可以使用ProcessBuilder.directory()设置传递的工作目录。此外,ProcessBuilder的许多首次用户遇到的一个难题是需要使用流程的输出和错误流。请参阅Process.getInputStream()和Process.getErrorStream()。