【问题标题】:Alternate between writing to text file and console in JAVA在 JAVA 中写入文本文件和控制台之间交替
【发布时间】:2013-04-14 06:09:19
【问题描述】:

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

我能够成功输出到文本文件。但是,在关闭为写入文本文件而创建的 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");
}

【问题讨论】:

  • java 和 javascript 是不同的语言。
  • 我是个新手;我不知道。谢谢 :o)

标签: java


【解决方案1】:

System.out(默认为控制台)存储在setOut之前的某个变量中。

oldOut = System.out;

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

System.setOut(oldOut);

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

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

【讨论】:

  • 非常感谢您的帮助和解释!
【解决方案2】:

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

saveOut=System.out

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

System.setOut(saveOut)

把原来的system.out放回去。

根据需要重定向流,只是不要跨越它们。

【讨论】:

  • 感谢您分享您的智慧!!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-09-26
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多