如何将StringBuilder中的不同值作为单独的参数传递给Process调用,以便从Java

时间:2015-10-28 05:58:11

标签: java python process stringbuilder processbuilder

我正在使用python script方法从Java执行Process。我有这个代码部分,其中StringBuilder具有以下结构:(val1,val2,...)

现在我有这部分代码使用Process方法从Java代码中执行python脚本:

ProcessBuilder pb = new ProcessBuilder("python","test1.py");
Process p = pb.start();

BufferedReader in = new BufferedReader(new InputStreamReader(p.getInputStream()));
int ret = new Integer(in.readLine()).intValue();

现在我想要的是首先检查我的StringBuilder str是否为空,即字符串只是()()str内没有任何内容1}}。如果它不为空(即()内有值),那么我需要将每个值作为单独的参数传递给我的python脚本Process调用。例如,如果我的str(val1,val2),那么我需要在val1调用中将val2Process作为单独的参数传递,以便从内部执行python脚本Java代码。

如何修改当前代码以包含此内容?

1 个答案:

答案 0 :(得分:0)

为什么要使用StringBuilder而不是仅仅传递参数?

new ProcessBuilder("python", "test1.py", "val1", "val2")

如有必要,您可以动态创建该参数数组。

List<String> args = new ArrayList<>();
args.add("python");
args.add("test1.py");
args.addAll(myOtherArgsThatICollectedInAList);
new ProcessBuilder(args.toArray(new String[0]);