InputStream和Reader的区别
InputStream和Reader的区别
1.java.io下面有两个抽象类:InputStream和Reader,InputStream是表示字节输入流的所有类的超类 ,Reader是用于读取字符流的抽象类2.InputStream提供的是字节流的读取,而非文本读取,这是和Reader类的根本区别。Reader读取出来的是char数组或者String ,使用InputStream读取出来的是byte数组。
3.fileInputStream 是InputStream 的实现类 fileReader 是Reader 的实现类
FileInputStream 类以二进制输入/输出,I/O速度快且效率搞,但是它的read()方法读到的是一个字节(二进制数据),很不利于人们阅读,而且无法直接对文件中的字符进行操作,比如替换,查找(必须以字节形式操作);
而Reader类弥补了这个缺陷,可以以文本格式输入/输出,非常方便;比如可以使用while((ch = filereader.read())!=-1 )循环来读取文件;可以使用BufferedReader的readLine()方法一行一行的读取文本。
4.InputStreamReader ,它是字节转换为字符的桥梁。 你可以在构造器重指定编码的方式,如果不指定的话将采用底层操作系统的默认编码方式,例如GBK等。
5.FileReader与InputStreamReader 涉及编码转换(指定编码方式或者采用os默认编码),可能在不同的平台上出现乱码现象!而FileInputStream 以二进制方式处理,不会出现乱码现象.
因此要指定编码方式时,必须使用InputStreamReader 类,所以说它是字节转换为字符的桥梁;
6.BufferReader类用来包装所有其 read() 操作可能开销很高的 Reader(如 FileReader 和InputStreamReader)。
JAVA/291.html">http://www.itemperor.com/a/JAVA/291.html
原文链接:http://www.jxszl.com/biancheng/JAVA/446643.html