❤️ 个人主页:水滴技术
🚀 支持水滴:点赞👍 + 收藏⭐ + 留言💬
🌸 订阅专栏:Java 教程:从入门到精通
大家好,我是水滴~~
前面我们已经学会了字节流的使用,本篇开始介绍字符流。字符输入输出流是所有字符流的超类,学会了它们的方法,也基本上掌握了其子类的使用了。
字符和字节的区别
- 字节(Byte)是计算机信息技术用于计量存储容量的一种计量单位,一个字节等于八位比特(Bit)。
- 字符(Character)是各种文字和符号的总称,包括各国家文字、标点符号、图形符号、数字等。一般情况下一个英文字母或字符占用一个字节,一个汉字占用两个字节(具体占用字节数与字符集相关)。
字符集(Character Set)是多个字符的集合,字符集种类较多,每个字符集占用的字符个数不同。下面是一些常见的字符集:
- ASCII:一个字符占用一个字节。
- UTF-8:一个英文字符占用一个字节,一个中文字符占用三个字节。
- GBK:一个英文字符占用一个字节,一个中文字符占用两个字节。
- Unicode:一个英文字符占用一个字节,一个中文字符占用两个字节。
Reader(字符输入流)
java.io.Reader
抽象类是所有字符输入流的超类。其子类必须实现read(char cbuf[], int off, int len)
和 close()
方法。为了提高效率和额外的功能,大多数子类重写了该类中的一些方法。
常用方法
int read()
从流中读取一个字符。该方法会阻塞,直到字符可用、发生 I/O 异常或达到流的结尾。
返回值:该方法将读取的内容以 0 至 65535(0x00 - 0xffff) 范围内的整数返回,如果到达流的末尾,则为 -1。
int read(char cbuf[])
从流中读取多个字符,并存入缓冲区数组
cbuf
中。该方法会阻塞,直到字符可用、发生 I/O 异常或达到流的结尾。
返回值:读取的字符数。如果已经到达流的结尾,则为 -1。
int read(char cbuf[], int off, int len)
从流中读取多个字符,并存入缓冲区数组
cbuf
一部分,从缓冲区的off
下标处开始存储,最多存入len
个字符。
返回值:读取的字符数。如果已经到达流的结尾,则为 -1。
void close()
关闭该输入流,并释放与之相关的所有系统资源。
Writer(字符输出流)
java.io.Writer
抽象类是所有字符输出流的超类。其子类必须实现 write(char cbuf[], int off, int len)
和 close()
方法。为了提高效率和额外的功能,大多数子类重写了该类中的一些方法。
常用方法
void write(int c)
向输出流写入一个字符。
void write(char cbuf[])
向输出流写入一个字符数组。
void write(char cbuf[], int off, int len)
向输出流写入数组的一部分。从数组
cbuf
的下标off
处开始,最多写入len
个字符。
void write(String str)
向输出流写入一个字符串。
void write(String str, int off, int len)
向输出流写入字符串的一部分。
void flush()
刷新该输出流,强制将缓存区中的字符写出去。
void close()
关闭该输出流,并释放与之相关的所有系统资源。