A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 邵天强 中级黑马   /  2012-11-13 08:13  /  1833 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

当写数据的时候,调用Flush方法或者close方法,对数据进行刷新,我知道flush刷新后可以继续使用而流不被关闭,close刷新后,会将流关闭,但是我有一个疑问,使用标准输入输出System.in与System.out时,是没有显式刷新和关闭流的操作的,是被封转了吗?还是其他?

评分

参与人数 1技术分 +1 收起 理由
古银平 + 1 赞一个!

查看全部评分

2 个回复

倒序浏览
本帖最后由 陈德基 于 2012-11-13 12:00 编辑

标准输入流在调用的时候,返回的是in这个字段指向的一个字节流的子类对象,标准输出流也一样。而字节流是不需要刷新的。字节流和字符流的区别就在于,字节流操作的是字节数据,在操作的过程中不需要任何的中转,或者查表等操作。字符流不同,字符流中封装了一个数组用来暂时存储接收的字节数据,在输出的时候还要进行查表动作,因此就涉及到了中转过程,所以字符流需要对封装在内部的数组进行刷新动作。关于关闭流资源的操作,当然不管是字节流还是字符流,都在使用系统的资源,自然要通过java语言来手动关闭系统的底层资源。

点评

赞一个  发表于 2012-11-13 12:20

评分

参与人数 1技术分 +1 收起 理由
冯海霞 + 1

查看全部评分

回复 使用道具 举报
不要显示关的原因就是System.in与System.out,我觉得吧,跟别的Reader和Writer流不一样,你要把他给关了,键盘不能录入,屏幕不能输出。所以计算机一开机,System.in与System.out这两个流就是开着的,不需要你去显示关闭。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马