第一次在论坛提问.
- Java code
public static void main(String[] args) throws FileNotFoundException { PrintStream out = new PrintStream("d:/d.txt"); System.setOut(out); //改变了标准输出流 System.out.println(System.out == out); // 标记1 文件中打印true System.out.println("某些数据."); //这样的话会像上面的文件中写入数据 // 问题: 我怎么样才能改回标准输出流呢? 在setOut前没有保存引用. // 疑惑: System类的out字段是public static final 的, 为什么可以改变呢? //标记1那里居然打印的是true }
------解决方案--------------------------------------------------------
楼主的问题很有意思。
问题: 我怎么样才能改回标准输出流呢? 在setOut前没有保存引用.
那就保存一下就好了嘛!
- Java code
PrintStream out = new PrintStream("d:/d.txt");PrintStream systemOut = System.out;//先把System.out取出来保存下来System.setOut(out);System.out.println(System.out == out);System.out.println("某些数据.");System.setOut(systemOut);//然后再设置回去System.out.println("变回来了!");
------解决方案--------------------------------------------------------
在System里的initializeSystemClass方法可以看到如何赋予标准输出流
你可以这样
- Java code
FileOutputStream fdOut = new FileOutputStream(FileDescriptor.out); System.setOut(new PrintStream(new BufferedOutputStream(fdOut, 128), true)); System.out.println("某些数据2.");
------解决方案--------------------------------------------------------