|
|||||||||
摘要: 嵌套 | 字段 | 构造方法 | 方法 | 详细信息: 字段 | 构造方法 | 方法 |
java.io
类 BufferedReader
java.lang.Object java.io.Reader java.io.BufferedReader
- 直接已知子类:
- LineNumberReader
-
public class BufferedReader
- extends Reader
从字符输入流中读取文本,缓冲各个字符,从而提供字符、数组和行的高效读取。
可以指定缓冲区的大小,或者可使用默认的大小。大多数情况下,默认值就足够大了。
通常,Reader 所作的每个读取请求都会导致对基础字符或字节流进行相应的读取请求。因此,建议用 BufferedReader 包装所有其 read() 操作可能开销很高的 Reader(如 FileReader 和 InputStreamReader)。例如,
BufferedReader in = new BufferedReader(new FileReader("foo.in"));将缓冲指定文件的输入。如果没有缓冲,则每次调用 read() 或 readLine() 都会导致从文件中读取字节,并将其转换为字符后返回,而这是极其低效的。
可以对使用 DataInputStream 进行按原文输入的程序进行本地化,方法是用合适的 BufferedReader 替换每个 DataInputStream。
- 从以下版本开始:
- JDK1.1
- 另请参见:
-
FileReader
,InputStreamReader
字段摘要 |
---|
从类 java.io.Reader 继承的字段 |
---|
lock |
构造方法摘要 | |
---|---|
BufferedReader(Reader in) 创建一个使用默认大小输入缓冲区的缓冲字符输入流。 |
|
BufferedReader(Reader in, int sz) 创建一个使用指定大小输入缓冲区的缓冲字符输入流。 |
方法摘要 | |
---|---|
void |
close() 关闭该流。 |
void |
mark(int readAheadLimit) 标记流中的当前位置。 |
boolean |
markSupported() 判断此流是否支持 mark() 操作(它一定支持)。 |
int |
read() 读取单个字符。 |
int |
read(char[] cbuf, int off, int len) 将字符读入数组的某一部分。 |
String |
readLine() 读取一个文本行。 |
boolean |
ready() 判断此流是否已准备好被读取。 |
void |
reset() 将流重置为最新的标记。 |
long |
skip(long n) 跳过字符。 |
从类 java.io.Reader 继承的方法 |
---|
read, read |
从类 java.lang.Object 继承的方法 |
---|
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
构造方法详细信息 |
---|
BufferedReader
public BufferedReader(Reader in, int sz)
-
创建一个使用指定大小输入缓冲区的缓冲字符输入流。
- 参数:
-
in
- 一个 Reader -
sz
- 输入缓冲区的大小 - 抛出:
-
IllegalArgumentException
- 如果 sz <= 0
BufferedReader
public BufferedReader(Reader in)
-
创建一个使用默认大小输入缓冲区的缓冲字符输入流。
- 参数:
-
in
- 一个 Reader
方法详细信息 |
---|
read
public int read() throws IOException
- 读取单个字符。
-
- 返回:
- 作为范围 0 到 65535 (0x00-0xffff) 的整数读入的字符,如果已到达流末尾,则返回 -1
- 抛出:
-
IOException
- 如果发生 I/O 错误
read
public int read(char[] cbuf, int off, int len) throws IOException
-
将字符读入数组的某一部分。
此方法实现相应
类的Reader
方法的常规协定。另一个便捷之处在于,它会尝试尽可能多的读取字符,方法是重复地调用基础流的read
read
方法。这种迭代的read
会一直继续下去,直到满足下列某个条件:- 已经读取了指定的字符数,
- 基础流的
read
方法返回-1
,指示文件末尾(end-of-file),或者 - 基础流的
ready
方法返回false
,指示将阻塞进一步的输入请求。
read
返回-1
(指示文件末尾),则此方法返回-1
。否则,此方法返回实际读取的字符数。鼓励(但不是必须)此类的各个子类以相同的方式尝试读取尽可能多的字符。
一般来说,此方法从此流的字符缓冲区中获得字符,根据需要从基础流中填充缓冲区。但是,如果缓冲区为空、标记无效,并且所请求的长度至少与缓冲区相同,则此方法将直接从基础流中将字符读取到给定的数组中。因此多余的
BufferedReader
将不必复制数据。 -
- 参数:
-
cbuf
- 目标缓冲区 -
off
- 开始存储字符处的偏移量 -
len
- 要读取的最大字符数 - 返回:
- 读取的字符数,如果已到达流末尾,则返回 -1
- 抛出:
-
IOException
- 如果发生 I/O 错误
readLine
public String readLine() throws IOException
- 读取一个文本行。通过下列字符之一即可认为某行已终止:换行 ('\n')、回车 ('\r') 或回车后直接跟着换行。
-
- 返回:
- 包含该行内容的字符串,不包含任何行终止符,如果已到达流末尾,则返回 null
- 抛出:
-
IOException
- 如果发生 I/O 错误
skip
public long skip(long n) throws IOException
- 跳过字符。
-
- 参数:
-
n
- 要跳过的字符数 - 返回:
- 实际跳过的字符数
- 抛出:
-
IllegalArgumentException
- 如果n
为负。 -
IOException
- 如果发生 I/O 错误
ready
public boolean ready() throws IOException
- 判断此流是否已准备好被读取。如果缓冲区不为空,或者基础字符流已准备就绪,则缓冲的字符流准备就绪。
-
- 返回:
- 如果保证下一个 read() 不阻塞输入,则返回 True,否则返回 false。注意,返回 false 并不保证阻塞下一次读取。
- 抛出:
-
IOException
- 如果发生 I/O 错误
markSupported
public boolean markSupported()
- 判断此流是否支持 mark() 操作(它一定支持)。
-
- 覆盖:
-
类
Reader
中的markSupported
-
- 返回:
- 当且仅当此流支持此 mark 操作时,返回 true。