问题:
考虑一个不返回任何值的方法但直接将其输出打印到控制台。您希望将此输出作为字符串检索以进行进一步处理。但是,修改方法的返回类型不是一个选项。
解决方案:
在 Java 中,可以通过以下步骤将控制台输出重定向到字符串:
捕获 System.out 输出:
默认情况下,控制台输出写入 System.out。要捕获此输出,请使用 System.setOut 方法切换输出目的地。
使用 ByteArrayOutputStream:
创建一个 ByteArrayOutputStream 对象,其中将输出存储为字节数组。
创建 PrintStream:
使用其构造函数将 PrintStream 连接到 ByteArrayOutputStream。此流会将 System.out 输出重定向到字节数组。
重定向输出:
使用新创建的 PrintStream 调用 System.setOut 作为的论点。这有效地将 System.out 的目标更改为 ByteArrayOutputStream。
以字符串形式检索输出:
将所需输出打印到控制台后,您可以通过刷新 PrintStream、将 System.out 重置为其原始目标,最后使用 ByteArrayOutputStream.toString() 将字节数组转换为字符串来将其作为字符串检索。
示例:
<code class="java">// 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());</code>
此程序将打印:
Here: Foofoofoo!
以上是如何在 Java 中将控制台输出重定向到字符串?的详细内容。更多信息请关注PHP中文网其他相关文章!