gpt4 book ai didi

java - 通过java进程构建器运行多个命令并通过bufferreader获取其输出

转载 作者:行者123 更新时间:2023-12-01 08:59:40 25 4
gpt4 key购买 nike

我正在运行以下代码:

public static void main(String[] args) throws IOException, InterruptedException {
ProcessBuilder pb = new ProcessBuilder("cmd.exe", "/C", "echo hello");
Process p = pb.start();


BufferedReader bufferedReader = new BufferedReader(new InputStreamReader(p.getInputStream()));
String line, l = "";
while ((line = bufferedReader.readLine()) != null) {

System.out.println(l);
l = l + line;

}

p.destroy();
bufferedReader.close();
System.out.println("completed");
ProcessBuilder pb1 = new ProcessBuilder("cmd.exe", "/C", "echo hi");
Process p1 = pb1.start();

line = "";
BufferedReader bufferedReader1 = new BufferedReader(new InputStreamReader(p1.getInputStream()));

while ((line = bufferedReader1.readLine()) != null) {

l = l + line;
System.out.println(l);

}

p1.destroy();
bufferedReader1.close();
System.out.println("completed");
}

但是在运行我的代码时,两个缓冲区读取器已正确提取结果。

问题是程序的执行没有终止并且被挂起。

最佳答案

为什么你不创建一个方法来接受你的命令并返回你的结果,像这样你可以执行许多命令,并且你可以在任何地方使用它您的程序,如果您需要一些更改,您只需更改此方法而不是所有程序:

你的代码应该像这样:

public static void main(String[] args) {
String command1 = "echo hello";
String command2 = "echo hi";
System.out.println(executerCommand(command1));
System.out.println(executerCommand(command2));
}

public static String executCommand(String command) {
String line;
String resultat = "";
try {
ProcessBuilder builder;

builder = new ProcessBuilder("cmd.exe", "/c", command);

builder.redirectErrorStream(true);
Process p = builder.start();
BufferedReader r = new BufferedReader(new InputStreamReader(p.getInputStream()));
while (true) {
line = r.readLine();
if (line == null) {
break;
}
resultat += line + "\n";
}
} catch (IOException e) {
System.out.println("Exception = " + e.getMessage());
}
return resultat;
}

这会返回如下结果:

run:
hello

hi

BUILD SUCCESSFUL (total time: 0 seconds)

希望可以帮到你

关于java - 通过java进程构建器运行多个命令并通过bufferreader获取其输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41783720/

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