捕获屏幕以Java格式打印

时间:2010-05-21 14:43:11

标签: java

我正在使用的一个类具有display()功能,可以向屏幕输出一些信息。我不被允许改变它。有没有办法从外部“捕获”它打印到屏幕上的字符串?

显示到控制台。

2 个答案:

答案 0 :(得分:5)

我能想出的最接近的事情就是抓住并转发通过System.out打印的所有内容。

查看setOut(java.io.PrintStream)方法。

一个完整的例子是:

import java.io.PrintStream;

public class Test {

    public static void display() {
        System.out.println("Displaying!");
    }

    public static void main(String... args) throws Exception {
        final List<String> outputLog = new ArrayList<String>();
        System.setOut(new PrintStream(System.out) {
            public void println(String x) {
                super.println(x);
                outputLog.add(x);
            }

            // to "log" printf calls:
            public PrintStream printf(String format, Object... args) { 
                outputLog.add(String.format(format, args));
                return this;
            }
        });

        display();
    }
}

答案 1 :(得分:2)

我不熟悉Java中的标准display()操作,这可能是您正在使用的框架所特有的。它打印到控制台?显示一个消息框?

如果您正在讨论通过System.out.println()System.err.println()进入控制台的打印输出,那么是。您可以重定向标准输入和标准输出。 使用:

    System.setErr(debugStream);
    System.setOut(debugStream);

并创建适当的流(例如,文件)。