java.lang.Object
java.io.Reader
java.io.CharArrayReader
- 所有已实现的接口:
-
Closeable
,AutoCloseable
,Readable
该类实现了一个可以用作字符输入流的字符缓冲区。
- 自版本:
- 1.1
-
Field Summary
Modifier and TypeFieldDescriptionprotected char[]
字符缓冲区。protected int
该缓冲区的末尾索引。protected int
缓冲区中标记的位置。protected int
当前缓冲区位置。 -
Constructor Summary
ConstructorDescriptionCharArrayReader
(char[] buf) 从指定的字符数组创建一个CharArrayReader。CharArrayReader
(char[] buf, int offset, int length) 从指定的字符数组创建一个CharArrayReader。 -
Method Summary
Modifier and TypeMethodDescriptionvoid
close()
关闭流并释放与其关联的任何系统资源。void
mark
(int readAheadLimit) 在流中标记当前位置。boolean
告知此流是否支持mark()操作,它支持。int
read()
读取单个字符。int
read
(char[] cbuf, int off, int len) 将字符读入数组的一部分。boolean
ready()
告知此流是否准备好进行读取。void
reset()
将流重置为最近的标记,如果从未标记过,则重置为开头。long
skip
(long n) 跳过字符。Methods declared in class java.io.Reader
nullReader, read, read, transferTo
-
Field Details
-
buf
protected char[] buf字符缓冲区。 -
pos
protected int pos当前缓冲区位置。 -
markedPos
protected int markedPos缓冲区中标记的位置。 -
count
protected int count该缓冲区的末尾索引。在该索引处及以后没有有效数据。
-
-
Constructor Details
-
CharArrayReader
public CharArrayReader(char[] buf) 从指定的字符数组创建一个CharArrayReader。- 参数:
-
buf
- 输入缓冲区(不会复制)
-
CharArrayReader
public CharArrayReader(char[] buf, int offset, int length) 从指定的字符数组创建一个CharArrayReader。生成的读取器将从给定的
offset
开始读取。可以从该读取器读取的char
值的总数将是length
或buf.length-offset
中较小的那个。- 参数:
-
buf
- 输入缓冲区(不会复制) -
offset
- 要读取的第一个字符的偏移量 -
length
- 要读取的字符数 - 抛出:
-
IllegalArgumentException
- 如果offset
为负数或大于buf.length
,或者length
为负数,或者这两个值的总和为负数。
-
-
Method Details
-
read
读取单个字符。- 覆盖:
-
read
在类中Reader
- 返回:
-
读取的字符,作为范围为0到65535(
0x00-0xffff
)的整数,如果已到达流的末尾,则返回-1 - 抛出:
-
IOException
- 如果发生I/O错误
-
read
将字符读入数组的一部分。如果
len
为零,则不会读取任何字符并返回0
;否则,将尝试读取至少一个字符。如果没有字符可用,因为流已到达末尾,则返回值-1
;否则,至少读取一个字符并存储到cbuf
中。- 指定:
-
read
在类中Reader
- 参数:
-
cbuf
- 目标缓冲区 -
off
- 开始存储字符的偏移量 -
len
- 要读取的最大字符数 - 返回:
- 读取的字符数,如果已到达流的末尾,则返回-1
- 抛出:
-
IndexOutOfBoundsException
- 如果off
为负数,或len
为负数,或len
大于cbuf.length - off
-
IOException
- 如果发生I/O错误
-
skip
跳过字符。如果在调用此方法之前流已到达末尾,则不会跳过任何字符并返回零。n
参数可能为负数,即使Reader
超类的skip
方法在这种情况下会抛出异常。如果n
为负数,则此方法不执行任何操作并返回0
。- 覆盖:
-
skip
在类中Reader
- 参数:
-
n
- 要跳过的字符数 - 返回:
- 实际跳过的字符数
- 抛出:
-
IOException
- 如果发生I/O错误
-
ready
告知此流是否准备好进行读取。字符数组读取器始终准备好进行读取。- 覆盖:
-
ready
在类中Reader
- 返回:
- 如果下一个read()保证不会因为输入而阻塞,则为true,否则为false。请注意,返回false并不保证下一个读取将阻塞。
- 抛出:
-
IOException
- 如果发生I/O错误
-
markSupported
public boolean markSupported()告知此流是否支持mark()操作,它支持。- 覆盖:
-
markSupported
在类中Reader
- 返回:
- 如果此流支持mark操作,则为true。
-
mark
在流中标记当前位置。后续调用reset()将重新定位流到此点。- 覆盖:
-
mark
在类中Reader
- 参数:
-
readAheadLimit
- 可读取的字符数限制,同时保留标记。由于流的输入来自字符数组,因此没有实际限制;因此忽略此参数。 - 抛出:
-
IOException
- 如果发生I/O错误
-
reset
将流重置为最近的标记,如果从未标记过,则重置为开头。- 覆盖:
-
reset
在类中Reader
- 抛出:
-
IOException
- 如果发生I/O错误
-
close
public void close()关闭流并释放与其关联的任何系统资源。一旦关闭流,进一步的read()、ready()、mark()、reset()或skip()调用将抛出IOException。关闭先前关闭的流不会产生任何效果。在另一个线程阻塞在读取器上时,此方法将阻塞。
-