将控制台输出重定向到Java中的字符串
我有一个函数的返回类型为VOID,它直接在控制台上打印。
但是,我需要字符串形式的输出,以便可以对其进行处理。
由于我无法使用返回类型为VOID的函数进行任何更改,因此我不得不将该输出重定向到字符串。
如何在JAVA中重定向它?
关于将stdout重定向到字符串有很多问题,但是它们仅重定向从用户获取的输入,而不重定向某些函数的输出…
回答:
如果功能正在打印到System.out
,则可以使用System.setOut
更改System.out
为PrintStream
你提供的方法来捕获该输出。如果创建PrintStream
与的连接ByteArrayOutputStream
,则可以将输出捕获为String。
例:
// Create a stream to hold the outputByteArrayOutputStream 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!
以上是 将控制台输出重定向到Java中的字符串 的全部内容, 来源链接: utcz.com/qa/422593.html