文章目录
前提:
⭐️ 在平时刷题,不清楚大家有没有这样的疑惑,对BufferedReader 有一些熟悉 ,但不知道使用细节及原理,特意写这篇文章帮大家梳理梳理!
1.基本介绍:
Buffered 音译 :缓冲区的 ;
BufferedReader:是缓冲输入流,它继承于Reader ;
BufferedReader:
- 从字符输入流读取文本,缓冲字符,以提供字符,数组和行的高效读取 ;
- 可以指定缓冲区大小,或者使用默认大小,默认值足够大,可用于大所属用途;
通常,我们在做基本Java算法题中,创建 BufferedReader的基本语法:
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
语法解析:
- System.in 字节输入流
- new InputStreamReader 将 字节流 转换为 字符流
- new BufferedReader 将字符流放入字符流缓冲区之中
2. BufferedReader 函数列表
BufferedReader(Reader in)
BufferedReader(Reader in, int size)
void close()
void mark(int markLimit)
boolean markSupported()
int read()
int read(char[] buffer, int offset, int length)
String readLine()
boolean ready()
void reset()
long skip(long charCount)
主要使用方法:
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str= br.readLine() ;
char c = br.read() ;
BufferedReader 对象创建后,我们便可以使用 read() 方法从控制台读取一个字符,或者用 readLine() 方法读取一个字符串。
注意:
-
StringBuffer类的readLine()从每次读取的一行内容,直至读取的为null为止。然后进行输出。
-
StringBuffer类的read()方法读取到的每一个数字转化后的字符,然后进行输出。
此处参考:菜鸟教程
3.案例演示:
3.1 从控制台读取多字符输入
从 BufferedReader 对象读取一个字符要使用 read() 方法,它的语法如下:
int read( ) throws IOException
每次调用 read() 方法,它从输入流读取一个字符并把该字符作为整数值返回。 当流结束的时候返回 -1。该方法抛出 IOException。
下面的程序示范了用 read() 方法从控制台不断读取字符直到用户输入 q。
BRRead.java 文件代码:
//使用 BufferedReader 在控制台读取字符
import java.io.*;
public class BRRead {
public static void main(String[] args) throws IOException {
char c;
// 使用 System.in 创建 BufferedReader
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
System.out.println("输入字符, 按下 'q' 键退出。");
// 读取字符
do {
c = (char) br.read();
System.out.println(c);
} while (c != 'q');
}
}
以上实例编译运行结果如下:
输入字符, 按下 'q' 键退出。
runoob
r
u
n
o
o
b
q
q
3.2 从控制台读取字符串
从标准输入读取一个字符串需要使用 BufferedReader 的 readLine() 方法。
它的一般格式是:
String readLine( ) throws IOException
下面的程序读取和显示字符行直到你输入了单词"end"。
BRReadLines.java 文件代码:
//使用 BufferedReader 在控制台读取字符
import java.io.*;
public class BRReadLines {
public static void main(String[] args) throws IOException {
// 使用 System.in 创建 BufferedReader
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
String str;
System.out.println("Enter lines of text.");
System.out.println("Enter 'end' to quit.");
do {
str = br.readLine();
System.out.println(str);
} while (!str.equals("end"));
}
}
以上实例编译运行结果如下:
Enter lines of text.
Enter 'end' to quit.
This is line one
This is line one
This is line two
This is line two
end
end
4. BufferedReader源码
博主写的很棒,源码分析参考这篇文章:
https://www.cnblogs.com/skywang12345/p/io_23.html