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

在Java中将输出重定向到文件,然后返回控制台,java,io-redirection,Java,Io Redirection,使用Eclipse或DrJava,如果我的Java程序包含以下代码,以便将输出重定向到一个文件,那么在程序的后面几行如何将输出重定向回控制台 System.setOut(new PrintStream(new FileOutputStream("output.txt"))); 或 最简单的方法就是抓住这条古老的小溪 PrintStream oldout = System.out; System.setOut(...); .... System.setOut(oldout); Syste

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

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


最简单的方法就是抓住这条古老的小溪

PrintStream oldout = System.out;

System.setOut(...);

....

System.setOut(oldout);

System.out
System.err
是非常古老的做事方式,没有多大用处。它们只应用于小型一次性程序。

为什么不直接使用文件流,而不是将System.out设置为文件流,写入System.out,然后再将其设置回文件流?我支持“不要这样做”的建议。如果您想在PrintStream上发送数据,只需在PrintStream上调用
println()
。您能给我看一下此方法的示例代码吗?非常感谢。我已经试过了。但是,在我重置之后,System.out.println()会按预期在控制台上工作,但是Sedgewick为他的普林斯顿(Coursera)课程创建的标准输出库没有打印到控制台。这不会,因为它正在本地缓存输出流,所以不会注意到System.out的任何更改。您要做的是使System.out成为一个委托流,然后更改它所委托的内容。
PrintStream oldout = System.out;

System.setOut(...);

....

System.setOut(oldout);