实际应用中,经常会出现操作字符输入输出的需求,如果依然采用字节流实现,则效率不高且容易出错,因此,JDK提供了字符流,而编码表就是字符流和字节流之间的桥梁。字符流顶层也是两个抽象类,分别是字符输入流java.io.Reader和字符输出流java.io.Writer。
1.字符输入流Reader
Reader类是专门用于读取字符流的抽象类。下面介绍几个常用的方法。
(1)public int read()throws IOException:用于读取单个字符。返回值为int整数读取的字符,范围在0到65535之间,如果已到达流的末尾,则返回-1。用于支持高效的单字符输入的子类应重写此方法。
(2)public int read(char[]cbuf)throws IOException:用于将字符读入数组。参数cbuf为目标缓冲区。返回值为读取的字符数,如果已到达流的末尾,则返回-1。
(3)public abstract int read(char[]cbuf,int off,int len)throws IOException:用于将字符读入数组的某一部分。参数cbuf表示目标缓冲区,off表示开始存储字符处的偏移量,len表示要读取的最多字符数。返回值为读取的字符数,如果已到达流的末尾,则返回-1。
(4)public abstract void close()throws IOException:关闭该流并释放与之关联的所有资源。在关闭该流后,再调用read()、ready()、mark()、reset()或skip()将抛出IOException。
2.字符输出流Writer
Writer类是写入字符流的抽象类。下面讲解该类的几个常用方法。(www.xing528.com)
(1)public void write(int c)throws IOException:用于写入单个字符。要写入的字符包含在给定整数值的16个低位中,16个高位被忽略。用于支持高效单字符输出的子类应重写此方法。参数c表示指定要写入字符的int。
(2)public void write(char[]cbuf)throws IOException:用于写入字符数组。参数cbuf表示要写入的字符数组。
(3)public abstract void write(char[]cbuf,int off,int len)throws IOException:用于写入字符数组的某一部分。参数cbuf表示字符数组,off表示开始写入字符处的偏移量,len表示要写入的字符数。
(4)public void write(String str)throws IOException:用于写入字符串。参数str表示要写入的字符串。
(5)public void write(String str,int off,int len)throws IOException:用于写入字符串的某一部分。参数str表示字符串,off表示相对初始写入字符的偏移量,len表示要写入的字符数。
(6)public abstract void flush()throws IOException:刷新该流的缓冲。如果该流已保存缓冲区中各种write()方法的所有字符,则立即将它们写入预期目标。然后,如果该目标是另一个字符或字节流,则将其刷新。因此,一次flush()调用将刷新Writer和OutputStream链中的所有缓冲区。
(7)public abstract void close()throws IOException:关闭该流,但要先刷新它。在关闭该流之后,再调用write()或flush()将导致抛出IOException。
Reader类和Writer类是抽象类,不能被实例化,针对不同的功能,提供了一系列子类,具体可以参考API文档。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。