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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郭振 中级黑马   /  2012-5-8 14:47  /  1960 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

我现在刚学到io,这两个类我感觉一样的呀!全都是操作文件的呀!他们到底有什么共同点,和区别啊

3 个回复

倒序浏览
FileInputStream是字节输入流,是以字节为基本单位来传输的,你在建立缓冲数据的时候  只能用byte[] buff=new byte[]来建立,
FileReader是字符输入流,是以字符为基本单位来传输的,建立缓冲数据的时候只能用char[] buff=。。。。来建立
   一般来说,FileInputStream是在操作如图片,MP3等类型的文件的时候用的
             FileReader是在操作如TXT,DOC等文本性质的文件的时候用的

点评

顶  发表于 2012-5-8 20:01
回复 使用道具 举报
FileInputStream是字节流,FileReader是字符流;
两个都可以用来操作文本数据,但用字节流操作文本时,设计到编码;用字符流操作可不考虑编码,可以理解成内嵌了编码表;
操作非文本数据时必须要用字节流。
回复 使用道具 举报
FileInputStream是字节流,FileReader是字符流。
在所有的流操作里,字节永远是最基础的,任何基于字节的操作都是正确的。无论你是文本文件还是二进制的文件。 如果确认流里面只有可打印的字符,包括英文的和各种国家的文字,也包括中文,那么可以考虑用字符流。下面说说区别:
由于编码不同,多字节的字符可能占用多个字节。比如GBK的汉字就占用2个字节,而UTF-8的汉字就占用3个字节。 所以,字符流是根据指定的编码,将1个或多个字节转化为java里面的unicode的字符,然后进行操作。
字符操作一般使用Writer,Reader等, 字节操作一般都是InputStream, OutputStream 以及各种包装类,比如BufferedInputStream和BufferedOutputStream等。
总结:如果你确认你要处理的流是可打印的字符,那么使用字符流会看上去简单一点。如果不确认,那么用字节流总是不会错的。 字节流顾名思意是处理2进制的
字符流处理的字符集
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马