从字符输入流中读取文本并将字符存入缓冲区以便能提供字符、数组和线段的高效读取。
可指定缓冲区尺寸或使用缺省尺寸。该缺省尺寸对大多数用途来说是足够的。
通常, Reader 的每个读请求引起由基本字符或字节流组成的相关的读请求。因此,建议将 BufferedReader 和代价太高的 read() 操作的 Reader 来打包,如 FileReaders 和 InputStreamReaders 。例如,
BufferedReader in
= new BufferedReader(new FileReader("foo.in"));
缓冲指定文件的输入。若无缓冲,则每个 read() 或 readLine() 调用将字节从文件中读出、转换为字符,然后返回,这种处理方法的效率是非常低的。
通过用适当的 BufferReader 替换每个 DatainputStream 可以使使用 DataInputStream 作为文本输入的程序本地化。
类 java.io.BufferedReader
java.lang.Object
|
+----java.io.Reader
|
+----java.io.BufferedReader
- public class BufferedReader
- extends Reader
- 下列类的父类:
- LineNumberReader
- 出现于:
- JDK1.1
- 参见:
- FileReader, InputStreamReader
构造子索引
- BufferedReader(Reader)
- 创建使用缺省尺寸输入缓冲区的缓冲字符输入流。
- BufferedReader(Reader, int)
- 创建使用指定尺寸输入缓冲区的缓冲字符输入流。
方法索引
- close()
- 关闭流。
- mark(int)
- 标记此流的当前位置。
- markSupported()
- 报告此流是否支持 mark() 实现的操作。
- read()
- 读取单一字符。
- read(char[], int, int)
- 将若干字符读入一个数组中。
- readLine()
- 读取一文本行。
- ready()
- 报告此流是否读就绪。
- reset()
- 将该流复位为最近标记。
- skip(long)
- 跳过若干字符。
构造子
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
- 读取单一字符。
-
- 抛出: OException
- 如果发生一 I/O 错误。
- 覆盖:
- 类 Reader 中的 read
read
public int read(char cbuf[],
int off,
int len) throws IOException
- 将若干字符读入一个数组中。
通常该方法从该流的字符缓冲区中获取字符,必要时用基本流填充。然而, 若缓冲区为空、标记无效、请求长度至少与缓冲区相同大,则该方法将从基本流中将字符直接读入给定数组。因此冗余的 BufferedReader
不复制不必要的数据。
-
- 参数:
- cbuf - 目的缓冲区
- off - 开始存储字符的偏移量。
- len - 读取的最大字符数
- 返回值:
- 读取字节数,若已读到流尾则返回 -1 。
- 抛出: OException
- 如果发生一 I/O 错误。
- 覆盖:
- 类 Reader 中的 read
readLine
public String readLine() throws IOException
- 读取一文本行。换行 ('\n')、回车 ('\r') 或紧跟着换行的回车符表示一行的终止。
-
- 返回值:
- 包含行内容但不包括行终止符的字符串, 若已到达流尾则为 null 。
- 抛出: OException
- 如果发生一 I/O 错误。
skip
public long skip(long n) throws IOException
- 跳过若干字符。
-
- 参数:
- n - 待跳过的字节数
- 返回值:
- 实际跳过的字符数
- 抛出: OException
- 如果发生一 I/O 错误。
- 覆盖:
- 类 Reader 中的 skip
ready
public boolean ready() throws IOException
- 报告此流是否已准备读。若缓冲区不为空,或者基本字符流就绪,就表明缓冲字符流就绪。
-
- 抛出: OException
- 如果发生一 I/O 错误。
- 覆盖:
- 类 Reader 中的 ready
markSupported
public boolean markSupported()
- 报告此流是否支持 mark() 操作和支持哪一个操作。
-
- 覆盖:
- 类 Reader 中的 markSupported
mark
public void mark(int readAheadLimit) throws IOException
- 标记此流的当前位置。接着调用 reset() 重新将流定位到该点。
-
- 参数:
- readAheadLimit - 保持标记不便时,读取的字符数的限制。读取这些字符之后,复位流的试图可以失败。限制值大于输入缓冲区将使所分配缓冲区的尺寸不小于限制。因此慎用大值。
- 抛出: IllegalArgumentException
- 若 readAheadLimit <0
- Throws: OException
- 如果发生一 I/O 错误。
- 覆盖:
- 类 Reader 中的 mark
reset
public void reset() throws IOException
- 将该流复位为最近标记。
-
- 抛出: OException
- 若该流仍未标记或标记非法
- 覆盖:
- 类 Reader 中的 reset 。
close
public void close() throws IOException
- 关闭流。
-
- 抛出: OException
- 如果发生一 I/O 错误。
- 覆盖:
- 类 Reader 中的 close 。