java - 是否可以将 Java 中的标准输出设置为文件和标准输出?

标签 java redirectstandardoutput

有一个 Java 命令可以将标准输出重定向到文件或返回到 标准输出:

PrintStream stdout = System.out;
System.setOut(new PrintStream(logFile));
// ...
System.setOut(stdout); 

但我需要两者都拥有。是否可以将 Java 中的标准输出设置为文件和标准输出?

最佳答案

我不知道有一个标准类可以做到这一点,但它非常简单:

  • 首先获取“普通”stdout PrintStream
  • 编写您自己的 PrintStream 实现,用于写入文件另一个 Printstream
  • 只需将原始的 stdout 传递到新的 DoublePrintingPrintStream,然后使用 setOut() 来使用该“双重打印”流

或者,还有诸如tee之类的工具那可以为你做到这一点。因此,不必用它来打扰您的 Java 代码 - 只需让外部读取标准输出、打印到控制台并写入文件即可。

关于java - 是否可以将 Java 中的标准输出设置为文件和标准输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47670791/

相关文章:

C# 关闭标准输出

java - Eclipse 自动完成功能类似于 Netbeans

java - 如何在 Java 中将数字四舍五入到 n 位小数

java - Exoplayer 离线 - 下载消耗的数据量超过文件大小

VB.net 重定向实时进程输出

vb.net - 将标准输出从进程(msxsl.exe)重定向到VB.NET中的字符串

java - 如果您已经重定向标准输出,是否可以访问控制台?

java - 将 System.setout 重定向回标准输出

java - 我应该使用 ConcurrentHashMap 吗?

java - 启用 RawMessageDelivery 时的 Amazon SNS 通知验证