首页 > Java > java教程 > 如何在 Java 中将控制台输出重定向到字符串?

如何在 Java 中将控制台输出重定向到字符串?

Patricia Arquette
发布: 2024-10-30 01:27:02
原创
1019 人浏览过

How to Redirect Console Output to a String in Java?

将控制台输出重定向到 Java 中的字符串

问题:

考虑一个不返回任何值的方法但直接将其输出打印到控制台。您希望将此输出作为字符串检索以进行进一步处理。但是,修改方法的返回类型不是一个选项。

解决方案:

在 Java 中,可以通过以下步骤将控制台输出重定向到字符串:

  1. 捕获 System.out 输出:

    默认情况下,控制台输出写入 System.out。要捕获此输出,请使用 System.setOut 方法切换输出目的地。

  2. 使用 ByteArrayOutputStream:

    创建一个 ByteArrayOutputStream 对象,其中将输出存储为字节数组。

  3. 创建 PrintStream:

    使用其构造函数将 PrintStream 连接到 ByteArrayOutputStream。此流会将 System.out 输出重定向到字节数组。

  4. 重定向输出:

    使用新创建的 PrintStream 调用 System.setOut 作为的论点。这有效地将 System.out 的目标更改为 ByteArrayOutputStream。

  5. 以字符串形式检索输出:

    将所需输出打印到控制台后,您可以通过刷新 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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板