字符流
Reader和Writer
Reader是字符输入流的父类;Writer是字符输出流的父类。
字符流是以字符(char)为单位读写数据的。一次处理一个unicode。字符流的底层仍然是基本的字节流。
1 常用方法
Reader的常用方法:
— int read() 读取一个字符,返回的int值“低16”位有效
— int read(char[] chs) 读取chs字符数组的length个字符并存入chs数组,返回值为实际读取到的字符量
Writer的常用方法:
— void write(int c) 写出一个字符,写出给定int值“低16位”表示的字符
— void write(char[] chs) 将给定chs数组中所有字符写出
— void write(String str) 将给定str字符串写出
— void write(char[] chs, int offset, int len) 将chs数组中从offset处开始连续的len个字符写出
2 转换流
字符转换流原理
InputStreamReader字符输入流,使用该流可以设置字符集,并按照指定的字符集从流中按照该编码将字节数据转换为字符并读取。
OutputStreamWriter字符输出流,使用该流可以设置字符集,并按照指定的字符集将字符转换为对应字节后通过该流写出。
指定字符编码
InputStreamReader(InputStream in, String charsetName) 基于给定的字节输入流以及字符编码创建ISR
InputStreamReader(InputStream in) 该构造方法会根据系统默认字符集创建ISR
OutputStreamWriter(OutputStream out, String charsetName) 基于给定的字节输出流以及字符编码创建OSW
OutputStreamWriter(OutputStream out) 该构造方法会根据系统默认字符集创建OSW
使用OSW
按照指定编码将文本写入文件
使用ISR
读取指定编码的文本文件
3 PrintWriter
PrintWriter是具有自动行刷新的缓冲字符输出流。其提供了比较丰富的构造方法。
— PrintWriter(File file)
— PrintWriter(File file, String charsetName)
— PrintWrite(String fileName)
— PrintWrite(String fileName, String charsetName)
— PrintWriter(OutputStream out)
— PrintWriter(OutputStream out, boolean autoFlush)
— PrintWriter(Writer writer)
— PrintWriter(Writer writer, boolean autoFlush)
其中参数为OutputStream与Writer的构造方法提供了一个可以传入boolean值参数,该参数用于表示PrintWriter是否具有自动行刷新。
print与println方法
PrintWriter提供了丰富的重载print与println方法。其中pringln方法在于输出目标数据后自动输出一个系统支持的换行符。若该流是具有自动行刷新的,那么每当通过println方法写出的内容都会被实际写出,而不是进行缓存。
常用方法:
— void print(int i):打印整数
— void print(char c):打印字符
— void print(boolean b):打印boolean值
— void print(char[] chs):打印字符数组
— void print(double d):打印double值
— void print(float f):打印float值
— void print(long l):打印long值
— void print(String str):打印字符串
使用PW输出字符数据
4 BufferedReader
BufferedReader是缓冲字符输入流,其内部提供了缓冲区,可以提高读取效率。常用构造方法:
— BufferedReader(Reader reader)
使用BR读取字符串
Buffered提供了一个可以便于读取一行字符串的方法:
— String readLine()
该方法连续读取一行字符串,直到读取到换行符为止,返回的字符串中不包含该换行符。
读取一个文本文件的所有行输出到控制台