3 回答
TA贡献1799条经验 获得超9个赞
如果功能正在打印到System.out,则可以使用System.setOut更改System.out为PrintStream您提供的方法来捕获该输出。如果创建PrintStream与的连接ByteArrayOutputStream,则可以将输出捕获为String。
例:
// Create a stream to hold the output
ByteArrayOutputStream baos = new ByteArrayOutputStream();
PrintStream ps = new PrintStream(baos);
// IMPORTANT: Save the old System.out!
PrintStream old = System.out;
// Tell Java to use your special stream
System.setOut(ps);
// Print some output: goes to your special stream
System.out.println("Foofoofoo!");
// Put things back
System.out.flush();
System.setOut(old);
// Show what happened
System.out.println("Here: " + baos.toString());
该程序仅打印一行:
Here: Foofoofoo!
TA贡献1752条经验 获得超4个赞
不要忘记这会造成线程问题,不仅是此方法(您可以通过同步解决此问题),而且还会导致打印到stdout的任何其他代码。baos.toString()
可能很容易"Foofohello worldofoo!"
添加回答
举报