黑马程序员技术交流社区

标题: 关于IO流的刷新问题 [打印本页]

作者: 邵天强    时间: 2012-11-13 08:13
标题: 关于IO流的刷新问题
当写数据的时候,调用Flush方法或者close方法,对数据进行刷新,我知道flush刷新后可以继续使用而流不被关闭,close刷新后,会将流关闭,但是我有一个疑问,使用标准输入输出System.in与System.out时,是没有显式刷新和关闭流的操作的,是被封转了吗?还是其他?
作者: 怪盗急得    时间: 2012-11-13 10:30
本帖最后由 陈德基 于 2012-11-13 12:00 编辑

标准输入流在调用的时候,返回的是in这个字段指向的一个字节流的子类对象,标准输出流也一样。而字节流是不需要刷新的。字节流和字符流的区别就在于,字节流操作的是字节数据,在操作的过程中不需要任何的中转,或者查表等操作。字符流不同,字符流中封装了一个数组用来暂时存储接收的字节数据,在输出的时候还要进行查表动作,因此就涉及到了中转过程,所以字符流需要对封装在内部的数组进行刷新动作。关于关闭流资源的操作,当然不管是字节流还是字符流,都在使用系统的资源,自然要通过java语言来手动关闭系统的底层资源。
作者: 会飞的鱼    时间: 2012-11-13 12:27
不要显示关的原因就是System.in与System.out,我觉得吧,跟别的Reader和Writer流不一样,你要把他给关了,键盘不能录入,屏幕不能输出。所以计算机一开机,System.in与System.out这两个流就是开着的,不需要你去显示关闭。




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2