黑马程序员技术交流社区

标题: FileputStream与FileReader怎么理解啊 [打印本页]

作者: 郭振    时间: 2012-5-8 14:47
标题: FileputStream与FileReader怎么理解啊
我现在刚学到io,这两个类我感觉一样的呀!全都是操作文件的呀!他们到底有什么共同点,和区别啊
作者: 蒋映辉    时间: 2012-5-8 14:56
FileInputStream是字节输入流,是以字节为基本单位来传输的,你在建立缓冲数据的时候  只能用byte[] buff=new byte[]来建立,
FileReader是字符输入流,是以字符为基本单位来传输的,建立缓冲数据的时候只能用char[] buff=。。。。来建立
   一般来说,FileInputStream是在操作如图片,MP3等类型的文件的时候用的
             FileReader是在操作如TXT,DOC等文本性质的文件的时候用的
作者: 张成龙    时间: 2012-5-8 15:04
FileInputStream是字节流,FileReader是字符流;
两个都可以用来操作文本数据,但用字节流操作文本时,设计到编码;用字符流操作可不考虑编码,可以理解成内嵌了编码表;
操作非文本数据时必须要用字节流。
作者: 韩慧阳    时间: 2012-5-8 15:49
FileInputStream是字节流,FileReader是字符流。
在所有的流操作里,字节永远是最基础的,任何基于字节的操作都是正确的。无论你是文本文件还是二进制的文件。 如果确认流里面只有可打印的字符,包括英文的和各种国家的文字,也包括中文,那么可以考虑用字符流。下面说说区别:
由于编码不同,多字节的字符可能占用多个字节。比如GBK的汉字就占用2个字节,而UTF-8的汉字就占用3个字节。 所以,字符流是根据指定的编码,将1个或多个字节转化为java里面的unicode的字符,然后进行操作。
字符操作一般使用Writer,Reader等, 字节操作一般都是InputStream, OutputStream 以及各种包装类,比如BufferedInputStream和BufferedOutputStream等。
总结:如果你确认你要处理的流是可打印的字符,那么使用字符流会看上去简单一点。如果不确认,那么用字节流总是不会错的。 字节流顾名思意是处理2进制的
字符流处理的字符集





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