全裸哭求!bufferread类中所有函数及用法
如题。
另:在jdk1.5.0中,使用scanner类输入时如何从键盘读取一行作为字符串(。next()读出来的是用空格断开的)?
java.lang.Object java.io.Reader java.io.BufferedReader 所有已实现的接口:
Closeable, Readable
直接已知子类:
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。
BufferedReader
public BufferedReader(Reader in, int sz)
in
- 一个 Reader
sz
- 输入缓冲区的大小
IllegalArgumentException
- 如果 sz <= 0public BufferedReader(Reader in)
in
- 一个 Readerpublic int read() throws IOException
IOException
- 如果发生 I/O 错误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
- 要读取的最大字符数
IOException
- 如果发生 I/O 错误public String readLine() throws IOException
IOException
- 如果发生 I/O 错误public long skip(long n) throws IOException
n
- 要跳过的字符数
IllegalArgumentException
- 如果 n
为负。
IOException
- 如果发生 I/O 错误public boolean ready() throws IOException
IOException
- 如果发生 I/O 错误public boolean markSupported()
Reader
中的 markSupported
public void mark(int readAheadLimit) throws IOException
readAheadLimit
- 在仍保留该标记的情况下,对可读取字符数量的限制。在读取此数量的字符后,尝试重置流可能会失败。限制值大于输入缓冲区的大小将导致分配一个新缓冲区,其大小不小于该限制值。因此应该小心使用较大的值。
IllegalArgumentException
- 如果 readAheadLimit < 0
IOException
- 如果发生 I/O 错误public void reset() throws IOException
IOException
- 如果从未标记过该流,或者标记已失效。public void close() throws IOException
IOException
- 如果发生 I/O 错误