Java 菜鸟教程

Java 流程控制

Java 数组

Java 面向对象(I)

Java 面向对象(II)

Java 面向对象(III)

Java 异常处理

Java 列表(List)

Java Queue(队列)

Java Map集合

Java Set集合

Java 输入输出(I/O)

Java Reader/Writer

Java 其他主题

Java BufferedReader 类

在本教程中,我们将借助示例学习Java BufferedReader及其方法。

java.io包的BufferedReader类可以与其他阅读器一起使用,以更有效地读取数据(以字符为单位)。

它继承了抽象类Reader。

BufferedReader类是Java Reader的子类。

BufferedReader的工作方式

BufferedReader维护一个内部的8192个字符缓冲器

在BufferedReader中进行读取操作期间,将从磁盘读取一部分字符并将其存储在内部缓冲区中。 并且从内部缓冲区中单独读取字符。

因此,减少了与磁盘的通信次数。这就是使用BufferedReader可以更快地读取字符的原因。

创建一个BufferedReader

为了创建一个BufferedReader,我们必须首先导入java.io.BuferedReader包。导入软件包后,就可以创建阅读器。

//创建一个FileReader
FileReader file = new FileReader(String file);

//创建一个BufferedReader
BufferedReader buffer = new BufferedReader(file);

在上面的示例中,我们创建了一个名为buffer的BufferedReader和一个名为file的FileReader。

此处,BufferedReader的内部缓冲区的默认大小为8192个字符。 但是,我们也可以指定内部缓冲区的大小。

//创建一个具有指定大小的内部缓冲区的BufferdReader
BufferedReader buffer = new BufferedReader(file, int size);

缓冲区将有助于更快地从文件中读取字符。

BufferedReader的方法

BufferedReader类为Reader中的不同方法提供了实现。

read()方法

  • read() - 从阅读器的内部缓冲区读取单个字符

  • read(char[] array) - 从阅读器读取字符并将其存储在指定的数组中

  • read(char[] array, int start, int length)- 从阅读器读取等于length字符的数量,并从start位置开始存储在指定的数组中

例如,假设我们有一个名为input.txt的文件,其中包含以下内容。

This is a line of text inside the file.

让我们尝试使用BufferedReader读取文件。

import java.io.FileReader;
import java.io.BufferedReader;

class Main {
  public static void main(String[] args) {

    //创建一个字符数组
    char[] array = new char[100];

    try {
      //创建 FileReader
      FileReader file = new FileReader("input.txt");

      //创建 BufferedReader
      BufferedReader input = new BufferedReader(file);

      //读取字符
      input.read(array);
      System.out.println("文件中的数据: ");
      System.out.println(array);

      //关闭 reader
      input.close();
    }

    catch(Exception e) {
      e.getStackTrace();
    }
  }
}

输出结果

文件中的数据:
This is a line of text inside the file.

在上面的示例中,我们创建了一个名为input的缓冲读取器。缓冲的阅读器与input.txt文件链接。

FileReader file = new FileReader("input.txt");
BufferedReader input = new BufferedReader(file);

在这里,我们使用read()方法从缓冲读取器的内部缓冲区中读取字符数组。

skip()方法

要丢弃和跳过指定数量的字符,可以使用skip()方法。例如

import java.io.FileReader;
import java.io.BufferedReader;

public class Main {

  public static void main(String args[]) {

    //创建一个字符数组
    char[] array = new char[100];

    try {
      //假设input.txt文件包含以下文本
      //This is a line of text inside the file.
      FileReader file = new FileReader("input.txt");

      //创建 BufferedReader
      BufferedReader input = new BufferedReader(file);

      //跳过5个字符
      input.skip(5);

      //读取字符
      input.read(array);

      System.out.println("跳过5个字符后的数据:");
      System.out.println(array);

      //关闭 reader
      input.close();
    }

    catch (Exception e) {
      e.getStackTrace();
    }
  }
}

输出结果

跳过5个字符后的数据:
is a line of text inside the file.

在上面的示例中,我们使用了skip()方法从文件读取器中跳过5个字符。因此,字符'T','h','i','s'和' '从原始文件跳过。

close()方法

要关闭缓冲的读取器,我们可以使用close()方法。调用close()方法后,我们将无法使用读取器读取数据。

BufferedReader的其他方法

方法描述
ready()检查文件阅读器是否准备好阅读
mark()标记读取器中已读取数据的位置
reset()重置标记,返回到阅读器中设置标记的位置