IO字符流
1. 框架
2. CharArrayReader/CharArrayWriter
- CharArrayReader 是字符数组输入流。它和ByteArrayInputStream类似,操作的数据是以字符为单位
1 | public class CharArrayReader extends Reader { |
- CharArrayReader 是字符数组输出流,用于写入数据符。操作的数据是以字符为单位
- CharArrayReader 默认数组缓冲区大小为32
1 | // 写入字符数组c到CharArrayWriter中。off是“字符数组b中的起始写入位置”,len是写入的长度 |
3. PipedReader/PipedWriter
- PipedWriter 是字符管道输出流,它继承于Writer。 PipedReader 是字符管道输入流,它继承于Writer。
- 同“PipedInputStream和PipedOutputStream”一样,可以通过管道进行线程间的通讯
- PipedWriter 和PipedReader 需要成对使用,使用connect连接
- PipedWriter 中write方法,实际调用的PipedReader 的receive方法,将数据写入管道输入流的缓冲字符数组,通过in(下一个写入字符位置)和out(下一个读取字符位置)判断数据是否读完,线程等待状态
4. InputStreamReader/OutputStreamWriter
- InputStreamReader和OutputStreamWriter 是字节流通向字符流的桥梁:它使用指定的 charset 读写字节并将其解码为字符。
- InputStreamReader 的作用是将“字节输入流”转换成“字符输入流”。它继承于Reader。
- OutputStreamWriter 的作用是将“字节输出流”转换成“字符输出流”。它继承于Writer。
5. FileReader/FileWriter
- FileReader 是用于读取字符流的类,它继承于InputStreamReader。要读取原始字节流,请考虑使用 FileInputStream。
- FileWriter 是用于写入字符流的类,它继承于OutputStreamWriter。要写入原始字节流,请考虑使用 FileOutputStream。
- FileReader是基于InputStreamReader实现的,构造函数传入FileInputStream
- FileWriter是基于OutputStreamWriter实现的,构造函数传入FileOutputStream
6. BufferedReader/BufferedWriter
6.1 BufferedReader
- BufferedReader 是缓冲字符输入流。它继承于Reader。
- BufferedReader 的作用是为其他字符输入流添加一些缓冲功能。
1 | //从BufferedReader中读取一个字符,该字符以int的方式返回 |
6.2 BufferedWriter
- BufferedWriter 是缓冲字符输出流。它继承于Writer。
- BufferedWriter 的作用是为其他字符输出流添加一些缓冲功能
- BufferedWriter通过字符数组来缓冲数据,当缓冲区满或者用户调用flush()函数时,它就会将缓冲区的数据写入到输出流中。
7. PrintWriter
- PrintWriter 是字符类型的打印输出流,它继承于Writer。
- PrintStream 用于向文本输出流打印对象的格式化表示形式。它实现在 PrintStream 中的所有 print 方法。它不包含用于写入原始字节的方法,对于这些字节,程序应该使用未编码的字节流进行写入。