首页 新闻 赞助 找找看

java的输出流重定向

0
悬赏园豆:50 [已解决问题] 解决于 2014-12-01 13:04

public class Test {

  public static void main(String[] args) {

    try {
      FileOutputStream file = new FileOutputStream("text.txt");
      PrintStream pri = new PrintStream(file);
      System.setOut(pri);//将输出定向到文件中
      System.out.println("I am in the file");//向文件中写入信息
      System.setOut(System.out);//输出定向到标准流
      System.out.println("I am back in cmd");//向标准输出流写信息
      pri.close();
    } catch (FileNotFoundException e) {
    e.printStackTrace();
  }

}

在上述代码中,第一次重定向成功的将信息写入到了文件中,但是在第二个重定向后,打印的消息也输入到了文件中,这是为什么?我已经更改为标准输出流了,求大神解答

Mayb...的主页 Mayb... | 初学一级 | 园豆:156
提问于:2014-11-29 21:04
< >
分享
最佳答案
0

http://blog.sina.com.cn/s/blog_605f5b4f01013bnp.html

http://bbs.csdn.net/topics/120067235

就是因为你第一次更改了System.out,第二次你再想改回来的时候,实际上是你已经修改过的System.out了,所以一般都是先保存一个副本:

PrintStream old = System.out;

System.setOut(old);

收获园豆:50
ThreeTree | 小虾三级 |园豆:1490 | 2014-11-29 21:48

几句话点醒了我,谢谢你的回答

Mayb... | 园豆:156 (初学一级) | 2014-11-29 21:58
其他回答(1)
0

也涨知识了。

angelshelter | 园豆:9887 (大侠五级) | 2014-11-30 21:21
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册