日期:2014-05-20 浏览次数:21092 次
    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
    }
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方法可以看到如何赋予标准输出流
你可以这样
        FileOutputStream fdOut = new FileOutputStream(FileDescriptor.out);
        System.setOut(new PrintStream(new BufferedOutputStream(fdOut, 128), true));
        System.out.println("某些数据2.");
------解决方案--------------------