Чтение файлов в Java с BufferedReader — Практическое руководство с примерами
Как читать файл в Java?
Java предлагает множество I/O-классов для файловых операций. Наиболее эффективный способ чтения текстовых файлов — через java.io.BufferedReader, который оборачивает низкоуровневый Reader и буферизует ввод для уменьшения дорогих системных вызовов.
Что такое BufferedReader в Java?
BufferedReader — это класс, читающий текст из входного потока (например, файла) путем буферизации символов. Это позволяет быстрое построчное или блоковое чтение без системного вызова для каждого символа.
Поскольку методы вроде read() у FileReader или InputStreamReader могут быть затратными, оборачивание их в BufferedReader — распространенная практика для повышения производительности.
Типичный паттерн использования выглядит так:
BufferedReader reader = new BufferedReader(new FileReader("D:\\DukesDiary.txt"));
Здесь файл открывается и буферизуется для эффективного чтения.
Для отображения содержимого файла итерируйте по каждой строке до достижения конца файла:
String currentLine;
while ((currentLine = reader.readLine()) != null) {
System.out.println(currentLine);
}
Цикл завершается, когда readLine() возвращает null, указывая на достижение конца файла.
Пример BufferedReader (до JDK 7)
Ниже приведен полный, готовый к продакшену пример, демонстрирующий лучшие практики обработки ресурсов:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class ReadFileExample {
public static void main(String[] args) {
BufferedReader reader = null;
try {
reader = new BufferedReader(new FileReader("D:\\DukesDiary.txt"));
String currentLine;
while ((currentLine = reader.readLine()) != null) {
System.out.println(currentLine);
}
} catch (IOException e) {
e.printStackTrace();
} finally {
try {
if (reader != null) {
reader.close();
}
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
}
Блок finally гарантирует, что reader закрыт, освобождая системные ресурсы даже при возникновении исключения.
Пример BufferedReader (JDK 7+ с Try-With-Resources)
С Java 7 и выше оператор try-with-resources упрощает очистку. Следующий пример показывает ту же логику в более лаконичной форме:
import java.io.BufferedReader;
import java.io.FileReader;
import java.io.IOException;
public class ReadFileExampleJDK7 {
private static final String FILENAME = "D:\\DukesDiary.txt";
public static void main(String[] args) {
try (BufferedReader br = new BufferedReader(new FileReader(FILENAME))) {
String currentLine;
while ((currentLine = br.readLine()) != null) {
System.out.println(currentLine);
}
} catch (IOException e) {
e.printStackTrace();
}
}
}
Использование try-with-resources автоматически закрывает BufferedReader, делая код чище и менее подверженным ошибкам.
java
- Освоение Java BufferedReader: эффективная обработка символьных потоков
- Мастерство файловых операций в Java с java.io: создание, чтение, запись и удаление
- Java Hello World: пошаговое руководство по написанию первой программы
- Метод String.length() в Java: как получить длину строки (пример)
- Понимание String.charAt() в Java: синтаксис, возвращаемый тип, исключения и пример
- Освоение String.compareTo() в Java: синтаксис, сценарии использования и примеры
- Метод String.contains() в Java: как проверить наличие подстроки — примеры
- Освоение String.endsWith() в Java: проверка суффиксов строки с примерами
- Алгоритм сортировки вставками в Java: понятный пример и пошаговое руководство
- Сортировка выбором в Java: пошаговый пример и полный код