当前位置: 首页 > 面试题库 >

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

崔绍辉
2023-03-14
问题内容

我有一个函数的返回类型为VOID,它直接在控制台上打印。

但是,我需要字符串形式的输出,以便可以对其进行处理。

由于我无法使用返回类型为VOID的函数进行任何更改,因此我不得不将该输出重定向到字符串。

如何在JAVA中重定向它?

关于将stdout重定向到字符串有很多问题,但是它们仅重定向从用户获取的输入,而不重定向某些函数的输出…


问题答案:

如果功能正在打印到System.out,则可以使用System.setOut更改System.outPrintStream你提供的方法来捕获该输出。如果创建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!


 类似资料:
  • 问题内容: 我想在JavaFX TextArea中显示控制台输出…不幸的是,我找不到JavaFX的任何有效示例,而只能找到Java Swing的实例,在我看来,这似乎不起作用。 编辑: 我尝试遵循以下示例:http : //unserializableone.blogspot.ch/2009/01/redirecting-systemout-and-systemerr- to.html 并扩展了我

  • 我正在尝试使用指定终端路径的外部工具(例如)将终端输出重定向到Eclipse控制台。当我运行这个工具时,它会在Eclipse外部打开终端。当我在Windows7中执行同样的操作时,将外部工具位置设置为,它在Eclipse控制台中运行。我想知道如何使终端(在Ubuntu14.04中)以同样的方式工作。

  • 问题内容: Java如何确定用于的编码? 给定以下类别: 它被保存为UTF-8并在Windows系统上进行编译。 然后在git-bash控制台上(使用UTF-8字符集),我这样做: 这里发生了什么? 显然,java检查它是否连接到终端,并在这种情况下更改其编码。有没有一种方法可以迫使Java简单地输出普通的UTF-8? 我也使用cmd控制台尝试了相同的操作。重定向STDOUT似乎没有任何区别。如果

  • 问题内容: 我正在使用以下代码启动流程构建器。我想知道如何将其输出重定向到字符串。 我尝试使用,但似乎没有用。 问题答案: 从阅读。您可以将输出附加到:

  • 问题内容: 我知道如何将标准输出重定向到文件,但是我不知道如何将其重定向到字符串。 问题答案: 是的-您可以使用: 然后您可以使用获取字符串。 要指定编码(而不依赖平台定义的编码),请使用构造函数,然后 如果要还原为原始流,请使用:

  • 我希望将名为bash的进程的stdout重定向到supervisor控制台,以便在启动supervisor时使用 命令,我可以看到子进程日志。我怎么能这么做?我尝试将syslog用于stdout_logfile属性,但它不起作用。