0

我想写入一个文本文件。然后,我想继续打印到控制台。

我能够成功输出到文本文件。但是,在关闭为写入文本文件而创建的 PrintStream 后,我无法打印到控制台。例如,在下面的代码中,文本文件具有名为“permutation”的方法的输出,后跟短语“Test before close”。但是,“关闭后测试”短语既不会打印到文本文件,也不会打印到控制台。感谢您的任何建议!

public static void main(String[] args) throws FileNotFoundException {
    PrintStream out2 = new PrintStream(new FileOutputStream("output.txt"));
    System.setOut(out2);
    permutation("1234");
    System.out.println("Test before close");
    out2.close();
    System.out.println("Test after close");
}
4

2 回答 2

0

您不必使用 system.setOut 来写入文件,您所做的是覆盖“System.out”而不是重置它。如果你真的想这样做,你应该添加:

saveOut=System.out

在 setOut 之前,然后在最后一行之前添加:

System.setOut(saveOut)

把原来的 system.out 放回去。

随心所欲地重定向流,只是不要穿过它们。

于 2013-04-14T06:19:13.950 回答
0

System.out(默认情况下,控制台)存储在您之前某处的变量中setOut

oldOut = System.out;

然后,在(或之前)之后out2.close();,添加:

System.setOut(oldOut);

这将恢复旧的标准输出,允许您再次打印到控制台。

(您的代码实际上所做的是将System.outset 设置为out2,现在已关闭;因此您的所有输出都将进入黑洞。)

于 2013-04-14T06:21:08.800 回答