[英]Reading Java process status with InputStream and then sending command prompts with OutputStream
我正在閱讀使用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();
問題是您使用了BufferedReader
。 僅當它已讀取整行(即行分隔符)時才返回。 但是,如果腳本要求提供提示,則不會出現行分隔符! 結果它將不會返回。
您必須使用其他類型的閱讀器才能控制過程。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.