这个问题怎么解决? 可能你也不知道的....
第一次在论坛提问.
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.");
------解决方案--------------------