网络知识 娱乐 【JAVASE】IO系列 BufferedReader(超详细解析)

【JAVASE】IO系列 BufferedReader(超详细解析)

🏠:博客首页: 进击的波吉
📕:今日分享的文章: 【JAVASE】IO系列 BufferedReader
💝:希望自己对IO系列的解析可以帮助到大家🎈
🌱:Boji 还在努力学JavaSE ,如有疑问、疏漏之处,请多多指点🙏
☀️:自学成长的路上,感谢大家相伴!No hurry , No Pause !💝

文章目录

  • 前提:
  • 1.基本介绍:
  • 2. BufferedReader 函数列表
  • 3.案例演示:
    • 3.1 从控制台读取多字符输入
    • 3.2 从控制台读取字符串
  • 4. BufferedReader源码

前提:

⭐️ 在平时刷题,不清楚大家有没有这样的疑惑,对BufferedReader 有一些熟悉 ,但不知道使用细节及原理,特意写这篇文章帮大家梳理梳理!

1.基本介绍:

在这里插入图片描述
Buffered 音译 :缓冲区的 ;
BufferedReader:是缓冲输入流,它继承于Reader ;
BufferedReader

  1. 从字符输入流读取文本,缓冲字符,以提供字符,数组和行的高效读取 ;
  2. 可以指定缓冲区大小,或者使用默认大小,默认值足够大,可用于大所属用途;

通常,我们在做基本Java算法题中,创建 BufferedReader的基本语法:

 BufferedReader br = new BufferedReader(new InputStreamReader(System.in));

语法解析:

  1. System.in 字节输入流
  2. new InputStreamReader 将 字节流 转换为 字符流
  3. 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() 方法读取一个字符串
注意:

  1. StringBuffer类的readLine()从每次读取的一行内容,直至读取的为null为止。然后进行输出。

  2. 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