📜  Java BufferedReader类

📅  最后修改于: 2020-09-26 13:44:21             🧑  作者: Mango

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

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

它扩展了抽象类Reader

The BufferedReader class is a subclass of Java Reader.


BufferedReader的工作

BufferedReader维护内部缓冲区8192个字符

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

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


创建一个BufferedReader

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

// Creates a FileReader
FileReader file = new FileReader(String file);

// Creates a BufferedReader
BufferedReader buffer = new BufferedReader(file);

在上面的示例中,我们创建了一个名为bufferBufferedReader和名为FileFileReader

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

// Creates a BufferdReader with specified size internal buffer
BufferedReader buffer = new BufferedReader(file, int size);

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


BufferedReader的方法

BufferedReader类提供Reader存在的不同方法的实现。

read()方法

  • read() -从读取器的内部缓冲区读取单个字符
  • read(char[] array) -从阅读器读取字符并将其存储在指定的数组中
  • read(char[] array, int start, int 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) {

    // Creates an array of character
    char[] array = new char[100];

    try {
      // Creates a FileReader
      FileReader file = new FileReader("input.txt");

      // Creates a BufferedReader
      BufferedReader input = new BufferedReader(file);

      // Reads characters
      input.read(array);
      System.out.println("Data in the file: ");
      System.out.println(array);

      // Closes the reader
      input.close();
    }

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

输出

Data in the file:
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[]) {

    // Creates an array of characters
    char[] array = new char[100];

    try {
      // Suppose, the input.txt file contains the following text
      // This is a line of text inside the file.
      FileReader file = new FileReader("input.txt");

      // Creates a BufferedReader
      BufferedReader input = new BufferedReader(file);

      // Skips the 5 characters
      input.skip(5);

      // Reads the characters
      input.read(array);

      System.out.println("Data after skipping 5 characters:");
      System.out.println(array);

      // closes the reader
      input.close();
    }

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

输出

Data after skipping 5 characters:
is a line of text inside the file.

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


close()方法

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


BufferedReader的其他方法
Method Description
ready() checks if the file reader is ready to be read
mark() mark the position in reader up to which data has been read
reset() returns the control to the point in the reader where the mark was set

要了解更多信息,请访问Java BufferedReader(Java官方文档)。