我試圖從由Java腳本啓動的.exe進程的控制檯獲取輸入。控制檯窗口中沒有任何內容出現,並且在程序終止之前程序不會讀取任何內容。Java:直到程序關閉才從Process對象輸入
blServ = new ProcessBuilder(blPath + "Blockland.exe", "ptlaaxobimwroe", "-dedicated", "-port " + port, "-profilepath " + blPath.substring(0, blPath.length() - 1)).start();
System.out.println("Attempting to start server...\n" + blPath);
consoleIn = new BufferedReader(new InputStreamReader(blServ.getInputStream()));
'blServ'是一個Process對象。是的,該計劃正在成功啓動。
public void blStreamConsole() //called once every 500 milliseconds
{
String lineStr = "";
String line = "";
int lines = 0;
try
{
if (consoleIn != null)
{
while ((line = consoleIn.readLine()) != null)
{
//if (!line.equals("%"));
//{
lineStr += line + wordSym;
lines++;
//}
}
}
}
catch (IOException e)
{
netOut.println("notify" + wordSym + "ERROR: An I/O exception occured when trying to get data from the remote console. Some lines may not be displayed.");
}
if (!lineStr.equals("") && !(lineStr == null))
netOut.println("streamconsole" + wordSym + lines + wordSym + lineStr);
}
基本上,這種方法認爲,如果有更多的輸入在consoleIn對象等待,並且如果存在,其追加每它具有另一個字符串線,和其它的字符串被髮送到客戶端。不幸的是,當Blockland.exe關閉時,它全部發送到一個大塊。對於縮進問題感到抱歉。 Stackoverflow編輯器重新安排了所有的代碼。