JDK阅读之Reader类

8 篇文章 0 订阅

JDK阅读之Reader类

工作中用到了字符流,所以去看了下JDK学习,分享一下学习笔记!

源码分析

这里附上我经常查看的源码JDK8的链接,供各位客官参考。

Reader类的前世今生

包名java.io
类名: Reader
继承类:java.lang.Object
实现的接口:Closeable, AutoCloseable, Readable
直接子类:BufferedReader, CharArrayReader, FilterReader, InputStreamReader, PipedReader, StringReader

filed域

用于同步此流上的操作的对象。

protected Object lock

构造函数
类型方法名描述
protectedReader()创建一个新的字符流阅读器,其关键部分将在阅读器本身上同步。
protectedReader(Object lock)创建一个新的字符流阅读器,其关键部分将在给定对象上同步。
构造函数细节

protected Reader()

描述:
创建一个新的字符流阅读器,其关键部分将在阅读器本身上同步。


protected Reader(Object lock)

描述:
创建一个新的字符流阅读器,其关键部分将在给定对象上同步。

方法分析
返回类型方法名描述
abstract voidclose()关闭流并释放与其关联的所有系统资源。
voidmark(int readAheadLimit)标记流中的当前位置。
booleanmarkSupported()判断此流是否支持mark()操作。
intread()读一个字符。
intread(char[] cbuf)将字符读入数组。
abstract intread(char[] cbuf, int off, int len)将字符读入数组的一部分。
intread(CharBuffer target)尝试将字符读入指定的字符缓冲区。
booleanready()判断此流是否可以读取。
voidreset()重置流。
longskip(long n)跳过字符。
方法使用细节

public int read(CharBuffer target)

描述:

尝试将字符读入指定的字符缓冲区。 缓冲区按原样用作字符存储库:唯一的更改是put操作的结果。 不执行缓冲器的翻转或倒带。

具体说明:interface Readable

参数:
target - 读取字符的缓冲区

返回:
添加到缓冲区的字符数,如果此字符源位于其末尾,则返回-1


public int read()

描述:
读一个字符。 此方法将阻塞,直到字符可用,发生I / O错误或到达流的末尾。
打算支持高效单字符输入的子类应该重写此方法。

返回:

字符读取,为0到65535(0x00-0xffff)范围内的整数,或者如果已到达流末尾则为-1


public int read(char[] cbuf)

描述:

将字符读入数组。 此方法将阻塞,直到某些输入可用,发生I / O错误或到达流的末尾。

返回:

读取的字符数,如果已到达流的末尾,则返回-1


public abstract int read(char[] cbuf, int off, int len)

描述:

将字符读入数组的一部分。 此方法将阻塞,直到某些输入可用,发生I / O错误或到达流的末尾。

参数:
cbuf - 目标缓冲区
off - 开始存储字符的偏移量
len - 要读取的最大字符数

返回:

读取的字符数,如果已到达流的末尾,则返回-1


public long skip(long n)

描述:
跳过字符。 此方法将阻塞,直到某些字符可用,发生I / O错误或到达流的末尾。

参数:
n - 要跳过的字符数

返回:
实际跳过的字符数


public boolean ready()

描述:
判断此流是否可以读取。

返回:
如果保证下一个read()不阻止输入,则返回true,否则返回false。 请注意,返回false并不能保证下一次读取将被阻止。


public boolean markSupported()

描述:
判断此流是否支持mark()操作。 默认实现始终返回false。 子类应该重写此方法。


public void mark(int readAheadLimit)

描述:

标记流中的当前位置。 对reset()的后续调用将尝试将流重新定位到此点。 并非所有字符输入流都支持mark()操作。

参数:
readAheadLimit - 限制在保留标记的同时可以读取的字符数。 读取这么多字符后,尝试重置流可能会失败。


public void reset()

描述:

重置流。 如果已标记流,则尝试将其重新定位到标记处。 如果尚未标记流,则尝试以适合特定流的某种方式重置它,例如通过将其重新定位到其起始点。 并非所有字符输入流都支持reset()操作,有些支持reset()而不支持mark()。


public abstract void close()

描述:

关闭流并释放与其关联的所有系统资源。 关闭流后,进一步的read(),ready(),mark(),reset()或skip()调用将抛出IOException。 关闭先前关闭的流无效。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值