IO(Reader/Writer)

1.Reader

a.简介

        i.是Java的IO库提供的另一种输入流。和InputStream的区别是:InputStream是字节流,以byte为单位,Reader是字符流,以char为单位。

        ii.java.io.Reader是所有字符输入流的超类。

b.FileReader

        i.FileReader默认的编码与系统相关,创建时需要指定编码,Windows系统的默认编码可能是GBK,打开一个UTF-8编码的文本文件出现乱码。
        ii.int read(char[] c)一次性读取若干字符并填充到char[]数组,返回实际读入的字符个数,最大不超过char[]数组的长度,返回-1表示流结束。

c.CharArrayReader

        i.可以在内存中模拟一个Reader,实际作用是把char[]数组变成一个Reader。

d.StringReader

        i.可以直接把String作为数据源,和CharArrayReader几乎一样。

e.InputStreamReader

        i.除了特殊的CharArrayReader和StringReader,普通的Reader实际上是基于InputStream构造的,因为Reader需要从InputStream中读取字节流(byte),然后根据编码设置,再转换成char就可以实现字符流。
        ii.Reader本质上是一个基于InputStream的byte到char的转换器,InputStreamReader转换器可以把任何InputStream转换成Reader。

2.Writer

a.简介

        i.带编码转换器的OutputStream,把char转换成byte并输出。

        ii.java.io.Writer是所有字符输出流的超类。

b.FileWriter

        i.向文件中写入字符流的Writer。

c.CharArrayWriter

        i.在内存中创建一个Writer,实际上是构造一个缓冲区,可以写入char,最后得到写入的char[]。

d.StringWriter

        i.也是一个基于内存的Writer,和CharArrayWriter类似。实际上,内部维护了一个StringBuffer,并对外提供了Writer接口。

e.OutputStreamWriter

        i.除了特殊的CharArrayWriter和StringWriter,普通的Writer实际上是基于OutputStream构造的,接收char,然后在内部自动转换成byte,并写入OutputStream。
        ii.Writer本质上是一个基于OutputStream的char到byte的转换器,OutputStreamWriter转换器可以把任何OutputStream转换成Writer。

3.PrintStream和PrintWriter

a.PrintStream

        i.是一种FilterOutputStream,提供写入各种数据类型的方法。
        ii.System.out:系统默认提供的标准输出流。System.err:系统默认提供的标准错误输出流。
        iii.可以打印各种数据类型,不会抛出IOException,编写代码时,不需要捕捉IOException。

b.PrintWriter

        i.PrintStream最终输出的总是byte数据,而PrintWrite则是扩展了Writer接口,它的print()/println()最终输出的是char数据。

4.Files

        a.读写小文件的工具类,读取大文件仍然要使用文件流。
        b.Files是java.nio包里的,封装了很多读写方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值