为什么SetOut不工作?

时间:2015-06-30 08:44:38

标签: java

我正在尝试首先使用setOut写入文件,然后将其重置为在控制台上打印helloworld但它无法正常工作并且正在将所有内容写入文件中

 import java.io.*;

public class SetOut {
   public static void main(String s[])throws Exception
   {
      FileOutputStream fout=new  FileOutputStream("aa.txt");
      PrintStream ps =new PrintStream(fout);
      System.setOut(ps);
      System.out.println("hello ");
      System.out.println("hay");
      PrintStream  ps4=System.out;
      System.setOut(ps4);
      System.out.println("hello world");
   }
}

1 个答案:

答案 0 :(得分:1)

这是因为您第一次拨打System.SetOut会用文件流覆盖System.out。您必须在函数开头保存System.out的原始值,以便稍后恢复。

  PrintStream  ps4=System.out; // save
  FileOutputStream fout=new  FileOutputStream("aa.txt");
  PrintStream ps =new PrintStream(fout);
  System.setOut(ps);
  System.out.println("hello ");
  System.out.println("hay");
  System.setOut(ps4);  // restore
  System.out.println("hello world");