JavaTM 2 Platform
Standard Ed. 5.0

java.io
类 Reader

java.lang.Object
  继承者 java.io.Reader
所有已实现的接口:
Closeable, Readable
直接已知子类:
BufferedReader, CharArrayReader, FilterReader, InputStreamReader, PipedReader, StringReader

public abstract class Reader
extends Object
implements Readable, Closeable

用于读取字符流的抽象类。子类必须实现的方法只有 read(char[], int, int) 和 close()。但是,多数子类将重写此处定义的一些方法,以提供更高的效率和/或其他功能。

从以下版本开始:
JDK1.1
另请参见:
BufferedReader, LineNumberReader, CharArrayReader, InputStreamReader, FileReader, FilterReader, PushbackReader, PipedReader, StringReader, Writer

字段摘要
protected  Object lock
          用于同步针对此流的操作的对象。
 
构造方法摘要
protected Reader()
          创建一个新的字符流 reader,其重要部分将同步其自身的 reader。
protected Reader(Object lock)
          创建一个新的字符流 reader,其重要部分将同步给定的对象。
 
方法摘要
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)
          跳过字符。
 
从类 java.lang.Object 继承的方法
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

字段详细信息

lock

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

构造方法详细信息

Reader

protected Reader()
创建一个新的字符流 reader,其重要部分将同步其自身的 reader。


Reader

protected Reader(Object lock)
创建一个新的字符流 reader,其重要部分将同步给定的对象。

参数:
lock - 要同步的对象。
方法详细信息

read

public int read(CharBuffer target)
         throws IOException
试图将字符读入指定的字符缓冲区。缓冲区可照原样用作字符的存储库:所做的惟一改变是 put 操作的结果。不对缓冲区执行反转或重绕操作。

指定者:
接口 Readable 中的 read
参数:
target - 要将字符读入的缓冲区
返回:
添加到缓冲区的字符数量,如果此字符源位于缓冲区末端,则返回 -1
抛出:
IOException - 如果发生 I/O 错误
NullPointerException - 如果目标为空
ReadOnlyBufferException - 如果目标是一个只读缓冲区

read

public int read()
         throws IOException
读取单个字符。在有可用字符、发生 I/O 错误或者已到达流的末尾前,此方法一直阻塞。

用于支持高效的单字符输入的子类应重写此方法。

返回:
作为整数读取的字符,范围在 0 到 65535 之间 (0x00-0xffff),如果已到达流的末尾,则返回 -1
抛出:
IOException - 如果发生 I/O 错误

read

public int read(char[] cbuf)
         throws IOException
将字符读入数组。在某个输入可用、发生 I/O 错误或者已到达流的末尾前,此方法一直阻塞。

参数:
cbuf - 目标缓冲区
返回:
读取的字符数,如果已到达流的末尾,则返回 -1
抛出:
IOException - 如果发生 I/O 错误

read

public abstract int read(char[] cbuf,
                         int off,
                         int len)
                  throws IOException
将字符读入数组的某一部分。在某个输入可用、发生 I/O 错误或者到达流的末尾前,此方法一直阻塞。

参数:
cbuf - 目标缓冲区
off - 开始存储字符处的偏移量
len - 要读取的最多字符数
返回:
读取的字符数,如果已到达流的末尾,则返回 -1
抛出:
IOException - 如果发生 I/O 错误

skip

public long skip(long n)
          throws IOException
跳过字符。在某个字符可用、发生 I/O 错误或者已到达流的末尾前,此方法一直阻塞。

参数:
n - 要跳过的字符数
返回:
实际跳过的字符数
抛出:
IllegalArgumentException - 如果 n 为负。
IOException - 如果发生 I/O 错误

ready

public boolean ready()
              throws IOException
判断是否准备读取此流。

返回:
如果保证下一个 read() 不阻塞输入,则返回 True,否则返回 false。注意,返回 false 并不保证阻塞下一次读取。
抛出:
IOException - 如果发生 I/O 错误

markSupported

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

返回:
当且仅当此流支持此 mark 操作时,返回 true。

mark

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

参数:
readAheadLimit - 在仍保留该标记的情况下,对可读取字符数量的限制。在读取这样多的字符后,尝试重置流可能会失败。
抛出:
IOException - 如果该流不支持 mark(),或者发生一些其他 I/O 错误

reset

public void reset()
           throws IOException
重置该流。如果已标记该流,则尝试在该标记处重新定位该流。如果已标记该流,则以适用于特定流的某种方式尝试重置该流,例如,通过将该流重新定位到其起始点。并不是所有的字符输入流都支持 reset() 操作,有些支持 reset() 而不支持 mark()。

抛出:
IOException - 如果尚未标记流,或者该标记已失效,或者该流不支持 reset(),或者发生一些其他 I/O 错误

close

public abstract void close()
                    throws IOException
关闭该流。在关闭流之后,进一步调用 read()、ready()、mark() 或 reset() 将会抛出 IOException。然而,关闭以前关闭的流无效。

指定者:
接口 Closeable 中的 close
抛出:
IOException - 如果发生 I/O 错误

JavaTM 2 Platform
Standard Ed. 5.0

提交错误或意见
有关更多的 API 参考资料和开发人员文档,请参阅 Java 2 SDK SE 开发人员文档。该文档包含更详细的、面向开发人员的描述,以及总体概述、术语定义、使用技巧和工作代码示例。

版权所有 2004 Sun Microsystems, Inc. 保留所有权利。 请遵守许可证条款。另请参阅文档重新分发政策