我正在阅读使用Java进程调用的脚本的输出。但是,在脚本运行过程中,它会在某些情况下提示用户回答y / n继续。但是,在阅读StackOverflow上的许多帖子后,我仍然坚持检测提示,然后在进程仍在运行时发送响应。
如果有人有任何想法,那就太棒了。
我尝试过从Scanner类和System.console读取不占优势。
这是我正在使用的代码的一部分。
Process p;
String file = "./upgrade.sh";
cmds.add(file);
cmds.add(sourcePath);
cmds.add(outputDirectoryPath);
cmds.add(zip);
cmds.add("-c");
//}
pb = new ProcessBuilder(cmds);
pb.directory(new File(binDir));
p = pb.start();
BufferedReader reader = new BufferedReader (new InputStreamReader(p.getInputStream()));
BufferedReader reader2 = new BufferedReader (new InputStreamReader(p.getErrorStream()));
BufferedWriter writer = new BufferedWriter(new OutputStreamWriter(p.getOutputStream()));
try
{
String line = reader.readLine();
while (line != null)
{
System.out.println(line);
line = reader.readLine();
}
reader.close();
writer.close();
}
catch (IOException e)
{
e.printStackTrace();
}
p.destroy();
答案 0 :(得分:1)
问题是您使用BufferedReader
。它只会在读取完整一行时返回,即行分隔符。但是如果脚本要求提示,则不会有行分隔符!因此它不会返回。
你必须使用其他类型的阅读器来控制这个过程。