Java IO(十二):Reader 和 Writer

本文介绍了Java IO包中的Reader和Writer基类及其用途。详细解释了它们如何用于处理字符流,与字节流的区别,以及如何使用这些类来读取和写入文本。此外还列举了一些常用的子类。

Reader

Reader 是 Java IO 中所有 Reader 的基类。Reader 与 InputStream 类似,不同点在于,Reader 基于字符而非基于字节。换句话说,Reader 用于读取文本,而 InputStream 用于读取原始字节。

请记住,Java 内部使用 UTF-8 编码表示字符串。输入流中一个字节可能并不等同于一个 UTF-8 字符。如果你从输入流中以字节为单位读取 UTF-8 编码文本,并且尝试将读取到的字节转换成字符,你可能读不到预期结果。

read() 方法返回一个包含了读取到的字符内容的 int 类型变量。如果返回 -1 ,表示 Reader 已经没有剩余可读字符,此时可以关闭 Reader。-1 是一个 int 类型,不是 byte 或者 char 类型,这是不一样的。

你通常会使用 Reader 的子类,而不是直接使用 Reader。Reader 的子类包括 InputStreamReader,CharArrayReader,FileReader 等等。

Reader 通常与文件、字符数组、网络等数据源相关联。

Writre

Writer 是 Java IO 中所有 Writer 的基类。与 Reader 和 InputStream 关系相似,Writre 基于字符而非字节,Writer 用于写入文本,OutputStream用于写入字节。

同样,你最好使用 Writer 的子类,不需要直接使用 Writer,因为子类的实现更加明确,更能表现你的意图。常用的子类包括 OutputWriter、CharArrayWriter、FileWriter 等。

Writer 的 Write(int c) 方法,会将传入参数的低16位写入到 Writer 中,忽略高 16 位。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值