inputstrEAm和rEADEr

java.io下面有两个抽象类:InputStream和ReaderInputStream是表示字节输入流的所有类的超类Reader是用于读取字符流的抽象类InputStream提供的是字节流的读取,而非文本读取,这是和Reader类的根本区别.即用Reader读取出来的是char数组或者String ,使用InputStream读取出来的是byte数组.弄清了两个超类的根本区别,再来看他们底下子类的使用,这里只对最常用的几个说明

InputStream和Reader的区别 InputStream 此抽象类是表示字节输入流的所有类的超类 InputStreamReader 是字节流通向字符流的桥梁:它使用指定的 charset 读取字节并将其解码为字符.它使用的字符集可以由名称指定或显式给定,否则可能接受平台默认的字符集. 每次调用 InputStreamReader 中的一个 read() 方法都会导致从基础输入流读取一个或多个字节.要启用从字节到字符的有效转换,可以提前从基础流读取更多的字节,使其超过满足当前读取操作所需的字节

流的操作规律:1,明确源和目的.数据源:就是需要读取,可以使用两个体系:inputstream、reader;数据汇:就是需要写入,可以使用两个体系:outputstream、writer;2,操作的数据是否是纯文本数据?如果是:数据源:reader 数据汇:

FileReader:需要从文件中读取数据时用.InputStreamReader:需要从键盘接收数据时用.通常是按字符流读入时,一般也不仅从键盘,也可以文件,网络,其它对象中读取,不过是按字符进行读取.它是Reader的直接子类.

stream是我们所说的流,也即是输入输出流.而且writer和reader一般我们是用来缓冲的.也就是在流上加个缓冲输出.

使用InputStreamReader isr = new InputStreamReader(inp);BufferedReader reader = new BufferedReader(isr);可以调用 reader.readLine()方法

filereader : 字符流bufferedreader : 也是字符流,但是在bufferedreader可以先把数据放到一个缓存区里,然后在进行处理,而且在bufferedreader 里有一个readline()方法.

BufferedReader 由Reader类扩展而来,提供通用的缓冲方式文本读取,而且提供了很实用的readLine,读取分行文本很适合,BufferedReader是针对Reader的,不直接针对文件,也不是只针对文件读取. FileInputStream 扩展自java.io.InputStream,InputStream提供的是字节流的读取,而非文本读取,这是和Reader类的根本区别.用Reader读取出来的是char数组或者String ,使用InputStream读取出来的是byte数组.

JAVA分为字节流(Stream结尾)和字符流(Reader、Write结尾),再分为输入流(InputStream、Reader)和输出流(OutputStream、Write),输入输出相对于内存而言.在读字符的时候用字符流,如文本文件、XML等.在读二进制文件时候用字节流,如RAR、EXE等不是文本以外的文件.Buffered开头的流只是加了缓冲区,为了读写提高效率.

是用filereader读取一个文件,把这个当参数扔给 bufferedreader 就是需要经过缓冲区了. 用java io的时候尽量使用缓冲区 能提高效率.

相关文档

电脑版