当前位置: 代码迷 >> J2SE >> 请问:关于System.out所指对象
  详细解决方案

请问:关于System.out所指对象

热度:121   发布时间:2016-04-23 19:58:11.0
请教:关于System.out所指对象
总感觉System.out所指向的流对象很神秘
这个对象是在虚拟机加载的时候创建的么
不同系统创建的标准输出流对象应该不同吧
目前所知的只能通过System.out来引用之
那么问题来了:这个流对象被关闭后如何再次打开啊....
(当被其他流包装时会发生这样的情况吧)
------解决思路----------------------
System.out一旦关闭估计是没有办法打开了,不过也没有人这么无聊,谁管它干嘛啊?
------解决思路----------------------
针对于屏幕显示来讲,System.out一旦被关闭是没有办法再打开的
不过正如【http://bbs.csdn.net/topics/390975028】8楼的例子那样
虽然不能再显示至屏幕,但是可以继续输出到文件

虚拟机加载的时候,做了类似下面这样的事情
【这里简化了一下,没有设定字符。集感兴趣的话,可以看System.java的源代码】
System.setOut(new PrintStream(new BufferedOutputStream(new FileOutputStream(FileDescriptor.out), 128), true));

而setOut是个本地方法,这种native的东东不太知道是否是完全开源的;如果有源代码的话,倒是可以看看是怎么关联上标准输入输出流的了
private static native void setOut(PrintStream);
  相关解决方案