Java常用API 之 java.io.Reader字符流(附解析和示例)_09

java.io.Reader类描述:

Reader类是一个抽象类,作用是读取字符流。子类必须实现的方法只有 read(char[ ], int, int) 和 close( )。

抽象类的概念:

抽象类是指拥有抽象方法的类,包含一个或多个抽象方法的类必须被声明为抽象的。但除了抽象的方法之外,抽象类还可以包含具体数据和具体方法,这一点与普通类一样。抽象方法充当着占位的角色,它们的具体实现在子类中。拓展抽象类可以有两种选择,一种是在子类中实现抽象类(父类)的部分抽象类方法或不实现抽象类(父类)的抽象方法,这样就子类也成了抽象类;另一种是在子类中实现抽象类(父类)的全部抽象方法,这样一来,子类就不是抽象的了。


public abstract class Reader //源码:Reader类的声明
extends Object
implements Readable, Closeable

Reader类实现了Java.lang.Readable接口和java.io.Closeable接口。

  1. Readable接口代表一个字符源,实现了Readable接口的字符可以通过调用read( )方法将字符添加到指定的字符缓冲区。 int read(CharBuffer cb) ,返回的是添加到到缓冲区的的字符数量,如果字符源已在末端,则返回-1。
  2. Closeable接口代表一个可以关闭的数据源。调用void close( )方法可以关闭数据流并释放与此数据流关联的所有系统资源。

--------------------------------------------------------静态变量-------------------------------------------------------

protected  Object lock :用于同步对此流操作的对象。为了提高效率,字符流对象可以使用其自身以外的对象来保护临界区。因此,子类应使用此字段中的对象,而不是使用this 或者使用同步方法。

临界区的概念:临界区指的是某段代码区,这段代码操作了被多个对象共享的资源,这部分代码需引入同步机制来保证一个对象在临界区运行时其他对象暂时不能对临界区进行访问。

------------------------------------------------------构造函数------------------------------------------------------

构造函数
protected Reader( ) 创建一个新的字符流 reader,其临界区与自身同步。
protected Reader(Object lock) 创建一个新的字符流 reader,其临界区与指定对象同步。

---------------------------------------对象方法(前两个是抽象方法,子类必须实现它们)------------------------

方法
abstract  void close( )   关闭该流并释放与之关联的所有资源。
abstract  int read(char[ ] cbuf, int off, int len)   将字符读入数组的某一部分。
 int read( )  读取单个字符。发生 I/O 错误或者已到达流的末尾,此方法就会进入阻塞状态,直到字符可用才回到就绪状态。
用于支持高效的单字符输入的子类应重写此方法。
int read(CharBuffer target)  试图将字符读入指定的字符缓冲区。如果发生 I/O 错误或者已到达流的末尾,此方法会进入阻塞状态。
 int read(char[ ] cbuf)  将字符读入数组。如果发生 I/O 错误或者已到达流的末尾,此方法会进入阻塞状态。
void mark(int readAheadLimit)  标记流中的当前位置。对 reset( ) 的调用将尝试将该流重新定位到标记点。并不是所有的字符输入流都支持 mark( ) 操作。
boolean markSupported( )  判断此流是否支持 mark() 操作。默认实现始终返回 false。子类应重写此方法。
boolean ready( )  判断是否准备读取此流。如果保证下一个 read( ) 不被阻塞,则返回 True,否则返回 false。注意,返回 false 并不保证下一次读取会被阻塞,也就是说处于不确定的状态。
void reset( )  重置该流。如果流已标记过,则尝试将流重新定位到标记点。如果流未标记过,则以特定的某种适合的方式尝试重置该流,例如,通过将该流重新定位到起始点。并不是所有的字符输入流都支持 reset() 操作,有些支持 reset() 而不支持 mark()。
long skip(long n)  跳过n个字符。如果发生 I/O 错误或者已到达流的末尾,此方法会进入

------------------------------------------------------------------------------------------------------------

java6中文文档在这部分翻译的好渣,各种错误。。不得不对照着英文文档看

你可能感兴趣的:(Java常用API)