Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 拦截和解析记录器或控制台输出而不干扰它_Java_Intercept_System.out - Fatal编程技术网

Java 拦截和解析记录器或控制台输出而不干扰它

Java 拦截和解析记录器或控制台输出而不干扰它,java,intercept,system.out,Java,Intercept,System.out,我在Java方面遇到了一些问题。我想要的很简单, 我正在为著名游戏Minecraft的一个mod开发一个插件,我需要能够解析到STOUT的每一行控制台输出 我在网上到处找了找,但似乎找不到任何可以用来做这件事的东西。我知道一些控制台输出是通过默认的记录器进行的,一些是通过system.out进行的。我有一个函数,parseConsole(stringline),它将解析该行,并在它包含单词时执行某些操作,等等。我希望对控制台上显示的每一行输出调用该函数,但它不能中断流,在我的函数解析后,每一行仍

我在Java方面遇到了一些问题。我想要的很简单, 我正在为著名游戏Minecraft的一个mod开发一个插件,我需要能够解析到STOUT的每一行控制台输出

我在网上到处找了找,但似乎找不到任何可以用来做这件事的东西。我知道一些控制台输出是通过默认的记录器进行的,一些是通过system.out进行的。我有一个函数,
parseConsole(stringline)
,它将解析该行,并在它包含单词时执行某些操作,等等。我希望对控制台上显示的每一行输出调用该函数,但它不能中断流,在我的函数解析后,每一行仍将发送到控制台。

您可以使用替换控制台打印流。您可以将其替换为在文本到达控制台的过程中检查文本的实现

下面是一个如何筛选的示例:

public class MyFilterPrintStream extends PrintStream {
  @Override public void print(String s) {
    // ... process output string here ...

    // pass along to actual console output
    super.print(s);
  }
}

// install my filter 
System.setOut(new MyFilterPrintStream(System.out));

见此[1]。基本上你想要一个T恤。[1] :谢谢你的回答。我想这可能与此有关。我知道我可以将其分配给ByteArrayOutputStream,但我不知道如何让插件在每次将一行输出到控制台时读取流。你能给我举个简单的例子吗?我是否必须循环流,直到它有东西在里面,然后在完成后清除它?那我怎么把线分开呢?用“\n”吗?我已经研究过了,但是我找不到任何可靠的东西。非常感谢。