返回介绍

java.io 类 Reader

发布于 2019-10-04 09:50:51 字数 8617 浏览 943 评论 0 收藏 0

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 Objectlock

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

构造方法摘要
protectedReader()

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

protectedReader(Objectlock)

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

方法摘要
abstract voidclose()

关闭该流。

voidmark(intreadAheadLimit)

标记流中的当前位置。

booleanmarkSupported()

判断此流是否支持 mark() 操作。

intread()

读取单个字符。

intread(char[]cbuf)

将字符读入数组。

abstract intread(char[]cbuf, intoff, intlen)

将字符读入数组的某一部分。

intread(java.nio.CharBuffertarget)

试图将字符读入指定的字符缓冲区。

booleanready()

判断是否准备读取此流。

voidreset()

重置该流。

longskip(longn)

跳过字符。

从类 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(Objectlock)
创建一个新的字符流 reader,其重要部分将同步给定的对象。
参数:
lock - 要同步的对象。

方法详细信息

read

public int read(java.nio.CharBuffertarget)
         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,
                         intoff,
                         intlen)
                  throws IOException
将字符读入数组的某一部分。在某个输入可用、发生 I/O 错误或者到达流的末尾前,此方法一直阻塞。
参数:
cbuf - 目标缓冲区
off - 开始存储字符处的偏移量
len - 要读取的最多字符数
返回:
读取的字符数,如果已到达流的末尾,则返回 -1
抛出:
IOException - 如果发生 I/O 错误

skip

public long skip(longn)
          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(intreadAheadLimit)
          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 错误

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文