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();
}
}
在上述代码中,第一次重定向成功的将信息写入到了文件中,但是在第二个重定向后,打印的消息也输入到了文件中,这是为什么?我已经更改为标准输出流了,求大神解答
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);
几句话点醒了我,谢谢你的回答
也涨知识了。