在Java中,如何逐行读取正在运行的另一个控制台应用程序的内容?
我有一本书。程序名为Blockland。exe正在运行。它使用一个叫做TruScript的游戏引擎,但它是一个控制台应用程序,我认为使用C++来将它变成一个应用程序。人们制作了一些程序,在blockland的控制台上播放。exe之前,但现在找不到了
通常,如何获得另一个正在运行的控制台应用程序的输出?一旦我得到了这些行,我就知道如何使用它来做我需要做的事情,但是如何使用Java获得控制台应用程序的输出呢
你可以在下面搜索框中键入要查询的问题!
我有一本书。程序名为Blockland。exe正在运行。它使用一个叫做TruScript的游戏引擎,但它是一个控制台应用程序,我认为使用C++来将它变成一个应用程序。人们制作了一些程序,在blockland的控制台上播放。exe之前,但现在找不到了
通常,如何获得另一个正在运行的控制台应用程序的输出?一旦我得到了这些行,我就知道如何使用它来做我需要做的事情,但是如何使用Java获得控制台应用程序的输出呢
# 1 楼答案
java中的
ProcessBuilder
提供了一种执行外部OS命令的方法,并通过管道输入和读取外部命令的输出。下面是一个这样做的示例:其中
ProcessOutputReader
是一个实现Runnable
的类。它从构造函数中提供的流开始读取,直到流中出现文件结尾。这是可以读取输出并处理它的线程。请注意,必须使用单独的线程处理流,因为java/OS为子进程提供的缓冲区是有限的。如果子进程开始在任一流(错误/输出)中放入过多数据,缓冲区变满,它将挂起例如,它可能看起来像(实现尚未完成):