将输出重定向到文件,然后返回到 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.out
和System.err
是非常古老的做事方式,并不是很有用。它们只能用于小型的一次性程序。
【讨论】:
我试过了。但是,在我重置后,System.out.println() 在控制台上按预期工作,但 Sedgewick 为他的普林斯顿 (Coursera) 课程创建的 StdOut 库没有打印到控制台。 它不会因为它在本地缓存输出流,所以对 System.out 的任何更改都不会被注意到。您要做的是使 System.out 成为委托流,然后也更改它所委托的内容。以上是关于将输出重定向到文件,然后返回到 Java 中的控制台的主要内容,如果未能解决你的问题,请参考以下文章