黑马程序员技术交流社区

标题: 众多字节字符流弄的我好浆糊 拜求指点之间的区别 [打印本页]

作者: 宗士为    时间: 2012-5-12 18:24
标题: 众多字节字符流弄的我好浆糊 拜求指点之间的区别
InputStream
OutputStream
InputStreamReader
OutputStreamWriter
FileReader
FileWriter
BufferedReader
BufferedWriter
LineNumberReader


这个太多了都不知道什么时候用什么 ,有什么区别和特点

作者: 张成龙    时间: 2012-5-12 18:43
操作纯文本数据使用字符流,操作非文本数据使用字节流。
作者: 孙宇晨    时间: 2012-5-12 18:48
InputStream  OutputStream仅仅读取和写入单个字节和字节数组 他们没有读取和写入字符串和数值的方法.
FileReader,FileWriter 是读字符的,1个字符是2个字节,16位
字符流主要读文本比较效率
字节流主要读二进制文件,图片,就是为了防止出现读取的单位放大,出现无法还原本程序的目的
InputStreamReader OutputStreamWriter  主要是字符流和字节流的转换类,通过它可以很容易的实现两者之间的互换。
BufferedReader  BufferedWriter 是缓冲区读写.   他就像用饮水机接水一样  接满了.一口喝干净
望采纳



作者: 陈忠    时间: 2012-5-12 19:34
这个其实蛮好理解的。
首先你可以把io流分成两大类,字节流和字符流。
字节流通常以Stream结尾,字符流以reader或writer结尾。
趋于这两者之间的有一个转换流:InputStreamReader和OutputStreamWriter.转换流的最大特点就是可以指定一个具体字符编码。
比如以需要将控制台输入读出来。
控制台输入System.in返回的是一个inputStream。控制台肯定是文本输入,则相对应得就是操作文本的IO流。
即FileInputStreamReader fs = new FileInputStream(System.in);
需要指定字符编码
InputStreamReader isr = new InputStreamReader (fs,"gbk");转换流默认的编码就是gbk。
需要提高效率
BufferedReader br  = new BufferedReader(isr);


根据这个思路。在慢慢看下API,我想应该就清晰了。




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