我正在尝试从由 Java 脚本启动的 .exe 进程的控制台获取输入。控制台窗口中不会出现任何内容,并且程序不会读取任何内容,直到进程终止。
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' 是一个进程对象。是的,该程序正在成功启动。
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 编辑器重新排列了所有代码。