将输出重定向到文件,然后返回到 Java 中的控制台

Posted

技术标签:

【中文标题】将输出重定向到文件,然后返回到 Java 中的控制台【英文标题】:Redirecting output to file then back to console in Java 【发布时间】:2015-04-20 03:10:43 【问题描述】:

使用 Eclipse 或 DrJava,如果我的 Java 程序包含以下代码以将输出重定向到文件,我如何在程序后面几行将输出重定向回控制台?

System.setOut(new PrintStream(new FileOutputStream("output.txt")));

System.setOut(new PrintStream(new File ("output.txt)));

【问题讨论】:

为什么不直接使用文件流,而不是设置 System.out 到它,写入 System.out 然后再设置回来? 我赞同“不要那样做”的建议。如果您想在那里发送数据,只需在 PrintStream 上调用 println() 你能给我看一下这个方法的示例代码吗?非常感谢。 【参考方案1】:

简单的方法是保留旧流。

PrintStream oldout = System.out;

System.setOut(...);

....

System.setOut(oldout);

System.outSystem.err 是非常古老的做事方式,并不是很有用。它们只能用于小型的一次性程序。

【讨论】:

我试过了。但是,在我重置后,System.out.println() 在控制台上按预期工作,但 Sedgewick 为他的普林斯顿 (Coursera) 课程创建的 StdOut 库没有打印到控制台。 它不会因为它在本地缓存输出流,所以对 System.out 的任何更改都不会被注意到。您要做的是使 System.out 成为委托流,然后也更改它所委托的内容。

以上是关于将输出重定向到文件,然后返回到 Java 中的控制台的主要内容,如果未能解决你的问题,请参考以下文章

将shell输出重定向到文件[重复]

Java代码工具箱之控制台输出重定向_控制台输出到文件

Pitest:如何将日志输出重定向到文件?

是否可以检查程序输出重定向到文件的控制台的宽度?

markdown 将所有控制台输出重定向到文件

Bash-将输出重定向到文件时处理退格控制字符