java - 在 Java 中捕获标准输出的内容

标签 java stdout println

我正在调用一个在我的控制台/标准输出中打印一些字符串的函数。我需要捕获这个字符串。我不能修改正在执行打印的函数,也不能通过继承更改运行时行为。我找不到任何允许我执行此操作的预定义方法。

JVM 是否存储打印内容的缓冲区?

有谁知道可以帮助我的 Java 方法吗?

最佳答案

您可以通过调用重定向标准输出

System.setOut(myPrintStream);

或者 - 如果您需要在运行时记录它,将输出通过管道传输到一个文件:

java MyApplication > log.txt

另一个技巧 - 如果你想重定向但不能更改代码:实现一个快速包装器来调用你的应用程序并启动它:

public class RedirectingStarter {
  public static void main(String[] args) {
    System.setOut(new PrintStream(new File("log.txt")));
    com.example.MyApplication.main(args);
  }
}

关于java - 在 Java 中捕获标准输出的内容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5389632/

相关文章:

Java - 为什么 char '+' 不会出现在控制台上?

java println 运行函数不返回函数

java - 存储值不起作用?

python - 捕获标准输出以供以后重播的明智方法?

java - Spring JPA 查询示例不返回结果

bash - 有没有办法从 bash 函数调用强制回显到命令行?

c - 从 stdout 读取并得到一个字符串

java - 方法不打印/返回

java - 测试 spring hibernate dao 和服务层

java - 如何使用iText添加PAdES-LTV