English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Учебник по основам 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 и его методах.

Класс BufferedReader пакета java.io может использоваться вместе с другими читателями для более эффективного чтения данных (в виде символов).

Он наследуется от абстрактного класса Reader.

Как работает BufferedReader

BufferedReader поддерживает внутреннийбуфер из 8192 символов.

Во время чтения в BufferedReader часть символов будет считана с диска и храниться в внутреннем буфере. И символы будут считываться из внутреннего буфера отдельно.

Таким образом, уменьшается количество коммуникаций с диском. Это и есть причина, почему использование BufferedReader позволяет быстрее читать символы.

Создание BufferedReader

Чтобы создать BufferedReader,我们必须 сначала импортировать пакет java.io.BufferedReader. После импорта пакета можно создать читатель.

//Создание FileReader
FileReader file = new FileReader(String file);
//Создание BufferedReader
BufferedReader buffer = new BufferedReader(file);

В примере выше мы создали BufferedReader с именем buffer и FileReader с именем file.

Здесь, размер внутреннего буфера BufferedReader по умолчанию составляет 8192 символов. Но мы также можем определить размер внутреннего буфера.

//Создание BufferedReader с внутренним буфером заданного размера
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с содержимым.

//Это строка текста внутри файла.

попытаемся использовать 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();
    }
  }
}

результат вывода

данными файла:
//Это строка текста внутри файла.

В предыдущем примере мы создали буферный читатель под названием 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 содержит следующий текст
      //Это строка текста внутри файла.
      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 символов:
является строкой текста внутри файла.

в примере выше мы использовали метод skip() для пропуска 5 символов из файлового читателя. Таким образом, символы 'T', 'h', 'i', 's' и ' ' пропущены из исходного файла.

метод close()

чтобы закрыть буферизованный читатель, мы можем использовать метод close(). После вызова метода close() мы не сможем использовать читатель для чтения данных.

другие методы BufferedReader

методописание
ready()проверить, готов ли файловый читатель к чтению
mark()позиция уже прочитанных данных в маркере чтения
reset()сбросить метку, вернуться к позиции метки в читателе