我想從使用ProcessBuilder的Java應用程序運行交互式可執行文件;它應該接受輸入,產生輸出,然後等待下一個輸入。這裏輸入/輸出流的主要問題。我發送一個輸入並且什麼也沒得到。下面是代碼:使用ProcessBuilder從Java Interactive Process讀取InputStream
private static Process process;
private static BufferedReader result;
private static PrintWriter input;
process = new ProcessBuilder("compile-lm", lmFile.toString(), " --score yes").redirectErrorStream(true).start();
input = new PrintWriter(new OutputStreamWriter(process.getOutputStream()), true);
input.println(message);
System.out.println(message);
result = new BufferedReader(new InputStreamReader(process.getInputStream()));
String line = new String();
while ((line = result.readLine()) != null)
{
/* Some processing for the read line */
System.out.println("output:\t" + line);
}
如果你有退出狀態嘗試使用'int es = process.waitFor(); '並顯示它到什麼問題 – zizoujab 2012-08-01 09:49:35
@ZiedJaballah我試圖在正確的操作'input.println(message)'之後獲得退出狀態並且它是0「正常終止」。還有什麼我可以嘗試調查問題在哪裏? – asadek 2012-08-01 10:43:14
嘗試更改命令。代碼聽起來很乾淨。也許你沒有得到一個輸出,只是因爲這個命令沒有任何回報。 – zizoujab 2012-08-03 17:09:29