我想将多个参数传递给 processBuilder 并用空格分隔参数。
这是命令,
String[] command_ary = {dir+"library/crc"," -s ", fileName," ",addressRanges};
我需要在“fcrc”之后和“-p”之后以及“filename”和“addressRange”之间提供一个空格。
谢谢
我想将多个参数传递给 processBuilder 并用空格分隔参数。
这是命令,
String[] command_ary = {dir+"library/crc"," -s ", fileName," ",addressRanges};
我需要在“fcrc”之后和“-p”之后以及“filename”和“addressRange”之间提供一个空格。
谢谢
您不需要包含空格。ProcessBuilder 将为您处理。只需一个一个地传递你的论点,没有空格:
ProcessBuilder pb = new ProcessBuilder(
dir + "library/crc",
"-s",
fileName,
addressRanges);
我们需要命令行参数之间的空格,因为命令行需要知道哪个是第一个参数,哪个是第二个等等。但是,当我们使用 时ProcessBuilder
,我们可以将一个数组传递给它,因此我们不需要添加这些空格来区分参数。ProcessBuilder 将exec
在检查后直接将命令数组传递给。例如,
private static final String JAVA_CMD = "java";
private static final String CP = "-cp";
private static final String CLASS_PATH = "../bin";
private static final String PROG = "yr12.m07.b.Test";
private static final String[] CMD_ARRAY = { JAVA_CMD, CP, CLASS_PATH, PROG };
ProcessBuilder processBuilder = new ProcessBuilder(CMD_ARRAY);
上面的代码将完美运行。
此外,您可以使用
Runtime.getRuntime().exec("java -cp C:/testt Test");
但是使用 ProcessBuilder 更方便,一个原因是如果我们的参数包含空格,我们需要在Runtime.getRuntime().exec()
like中传递引号java -cp C:/testt \"argument with space\"
,但是使用 ProcessBuilder 我们可以摆脱它。
ProcessBuilder processBuilder = new ProcessBuilder("command", "The first argument", "TheSecondWithoutSpace");
像这样使用它:
new java.lang.ProcessBuilder('netstat -an'.toString().split('\\s'))).start()