JDK阅读之Reader类

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

源码分析

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

Reader类的前世今生

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

filed域

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

protected Object lock

构造函数

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

protected Reader()

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


protected Reader(Object lock)

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

方法分析

返回类型 方法名 描述
abstract void close() 关闭流并释放与其关联的所有系统资源。
void mark(int readAheadLimit) 标记流中的当前位置。
boolean markSupported() 判断此流是否支持mark()操作。
int read() 读一个字符。
int read(char[] cbuf) 将字符读入数组。
abstract int read(char[] cbuf, int off, int len) 将字符读入数组的一部分。
int read(CharBuffer target) 尝试将字符读入指定的字符缓冲区。
boolean ready() 判断此流是否可以读取。
void reset() 重置流。
long skip(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。 关闭先前关闭的流无效。

你可能感兴趣的:(JDK阅读之Reader类)