【Java I/O 流】字符输入输出流:Reader 和 Writer

简介: 前面我们已经学会了字节流的使用,本篇开始介绍字符流。字符输入输出流是所有字符流的超类,学会了它们的方法,也基本上掌握了其子类的使用了。

在这里插入图片描述

❤️ 个人主页:水滴技术
🚀 支持水滴:点赞👍 + 收藏⭐ + 留言💬
🌸 订阅专栏: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()

关闭该输出流,并释放与之相关的所有系统资源。


系列文章

在这里插入图片描述

相关文章
|
1天前
|
缓存 Java
JAVA带缓存的输入输出流
JAVA带缓存的输入输出流
21 0
|
1天前
|
Java
JAVA基本数据类型输入输出流
JAVA基本数据类型输入输出流
16 0
|
1天前
|
Java
Java正则表达式去掉非汉字字符
【5月更文挑战第11天】Java正则表达式去掉非汉字字符
15 3
|
1天前
|
Java
【JAVA基础篇教学】第十三篇:Java中I/O和文件操作
【JAVA基础篇教学】第十三篇:Java中I/O和文件操作
|
1天前
|
存储 缓存 Java
|
1天前
|
Java
Java输入输出流详细解析
Java输入输出流详细解析
Java输入输出流详细解析
|
1天前
|
存储 监控 Java
Java输入输出:什么是NIO(New I/O)?
Java NIO是一种高效I/O库,特征包括非阻塞性操作、通道(如文件、网络连接)、缓冲区和选择器。选择器监控通道状态变化,通知应用程序数据可读写,避免轮询,提升性能。示例代码展示了一个使用NIO的服务器,监听连接、读取数据并处理客户端通信。
14 1
|
1天前
|
存储 Java 数据库连接
java使用mp持久化框架,写入5000个字符,但是VARCHAR(255) 会报错
使用Java的MyBatis Plus框架时,如果尝试将超过VARCHAR(255)限制的字符串(如5000个字符)存入数据库,会抛出异常。解决方法是将列类型改为TEXT。可通过在实体类属性上添加`@TableField(typeHandler = JdbcType.CLOB)`注解,如`private String content;`,将属性映射到CLOB类型列,以存储更长字符串。
13 0
|
1天前
|
Java
Java I/O流知识点总结分享
Java I/O流涵盖字节流、字符流、文件流和对象流,如InputStream/OutputStream(字节流基础)和Reader/Writer(字符流基础)。FileInputStream/FileOutputStream处理文件读写,Buffered*流提升效率。Reader/Writer的缓冲版本是BufferedReader/BufferedWriter,InputStreamReader/OutputStreamWriter负责流之间的转换。
15 1
|
1天前
|
存储 Java
JAVA中String长度限制解决超出字符长度
JAVA中String长度限制解决超出字符长度
23 1