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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 王春蕾 中级黑马   /  2014-5-20 08:43  /  1226 人查看  /  5 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 王春蕾 于 2014-5-20 08:47 编辑

最近在学习IO流时,被各种各样的类搞的头昏脑胀的,长得相似的实在太多了=_=。Reader有个子类是InputStreamReader,它跟InputStream类有什么关系啊?这两者的区别是什么?FileReader和FileInputStream又有什么关系?求解释啊

5 个回复

倒序浏览
我来给你回答一下:
1、InputStreamReader和InputStream区别:
A、InputStreamReader:是字符流中的一种方法,可以使用指定编码表进行读取,例如文件本来是UTF-8码表格式的的,你想用GBK码表读取,那么就可以使用InputStreamReader(“文件名”,指定码表)
B、InputStream是字节流的抽象父类,完全是不一样的概念,他的子类是FileInputStream.
2、FileReader和FileInputStream区别
A、FileReader是Reader的子类,属于字符流,可以直接读取字符文件的
B、FileInputStream是字节流,InputStream的子类,可以直接读取字节,两个是不一样的

回复 使用道具 举报
IO 流分 字节流 、字符流
  字节流与字符流 中又 分为  读 、写
字节流中的读是: InputStream , 写: OutputStream。
字符流中的读:Reader、 写: Writer

只要是以InputStream或OutputStream 结束的都是 字节流。
           以Reader或Writer结尾的是字符流
特殊:
转换流: InputStreamReader将字节流转换为字符流 ,  OutputStreamWriter将字符流转换为字节流
回复 使用道具 举报
java.io下面有两个抽象类:InputStream和Reader
InputStream是表示字节输入流的所有类的超类
Reader是用于读取字符流的抽象类
InputStream提供的是字节流的读取,而非文本读取,这是和Reader类的根本区别。
即用Reader读取出来的是char数组或者String ,使用InputStream读取出来的是byte数组。
弄清了两个超类的根本区别,再来看他们底下子类的使用:


InputStreamReader 是字节流通向字符流的桥梁:它使用指定的 charset 读取字节并将其解码为字符。它使用的字符集可以由名称指定或显式给定,或者可以接受平台默认的字符集。
InputStreamReader(“文件名”,指定码表)

FileReader和FileInputStream区别
FileReader是Reader的子类,是读取字符用的,而FileInputStream是InputStream的子类,是读取字节用的,比如读取一个文本文件时候就用FileReader而读取mp3文件时候就用FileInputStream了。
回复 使用道具 举报

看图理解更好

本帖最后由 周俊波 于 2014-5-20 11:39 编辑

当然这个可能不全面,不过你要了解更深,去百度一下,绝对收获多多
回复 使用道具 举报

莫惆怅,闭上眼,让我们一起好好捋捋他们之间关系吧。

IO字符流两大基类Reader/Writer   【主要用于文本文件的读写】
     Reader
         |----InputStreamReader
         |             |-------FileReader
         |
         |----BufferedReader

     Writer
         |----OutStreamWriter
         |             |-------FileWriter
         |
         |----BufferedWriter

IO字节流两大基类InputStream/OutputStream  【可读写媒体文件】
     InputStream
         |----FileInputStream
         |           |--FilterInputStream
         |           |          |---BufferedInputStream

    OutputStream
         |----FileOutputSteam           
         |         |--FilterOutputSteam
         |                   |----BufferedOutputStream


回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马