我在使用Java方面遇到了一些麻烦。我想要的很简单, 我正在开发一个知名游戏mod的插件,Minecraft,我需要能够解析STOUT出现的每一行控制台输出。
我在互联网上环顾四周,但我似乎找不到任何可以用来做这件事的东西。我知道一些控制台输出是通过默认的Logger,有些是通过system.out。我有一个函数,parseConsole(String line)
将解析该行并在它包含一个单词等时执行某些操作。我希望为控制台上显示的每一行输出调用此函数,但它不能中断flow,因为在我的函数解析之后,每一行仍然会被发送到控制台。
答案 0 :(得分:2)
您可以使用System.setOut()替换控制台PrintStream。您可以将其替换为在通往控制台的途中检查文本的实现。
以下是您可以过滤的示例:
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));