Java FileReader

Класс Java FileReader может использоваться для чтения данных(потока символов) из файлов. В этом уроке мы изучим класс FileReader, его конструкторы, методы и использование с помощью примеров.

1. Введение

Класс FileReader:

  • предназначен для чтения потоков символов.
  • часть пакета java.io.
  • расширяет класс InputStreamReader.
  • реализует интерфейсы Closeable, AutoCloseable и Readable.
  • если не указано иное, используется кодировка платформы по умолчанию.
  • использует размер буфера по умолчанию для чтения файлов.

2. Создание FileReader

Чтобы использовать FileReader в приложении, мы должны сначала импортировать его из пакета java.io с помощью оператора import. Для создания экземпляра FileReader используйте один из его конструкторов.

2.1 Использование имени файла

String fileName = "c:\temp\test.txt";FileReader input = new FileReader(fileName);

2.2 Использование файла

File file = new File("c:\temp\test.txt");FileReader input = new FileReader(file);

2.3 Кодировка символов

Оба примера выше создают экземпляр чтения файлов с кодировкой символов по умолчанию. Чтобы указать другую кодировку символов, мы можем передать информацию о кодировке как Charset во втором аргументе обоим конструкторам.

FileReader input = new FileReader(fileName, Charset.forName("UTF8"));//orFileReader input = new FileReader(file, Charset.forName("UTF8"));

3. Примеры FileReader

Давайте рассмотрим несколько примеров чтения файла с помощью FileReader в Java.

3.1 Чтение небольшого текстового файла в char[]

В данном примере мы читаем текстовый файл. Файл содержит 3 небольших сообщения hello world. Здесь мы пытаемся прочитать файл одной операцией read(), поэтому убедитесь, что вы создали достаточно большой char[] для хранения всего содержимого файла.

Этот метод следует использовать только для небольших текстовых файлов.

String fileName = "demo.txt";try(FileReader fileReader = new FileReader(fileName)) {char[] a = new char[2048];fileReader.read(a);//verify content//System.out.println(new String(a));}

3.2 Чтение файла по одному символу за раз

В данном примере мы используем метод read(), который считывает один символ из файла и возвращает его. Когда все содержимое файла прочитано, он возвращает -1, что указывает на конец файла.

String fileName = "demo.txt";FileReader fileReader = new FileReader(fileName);try {int i;while((i = fileReader.read()) != -1) {System.out.print((char)i);}} finally {fileReader.close();}

3.3 Чтение файла построчно

FileReader напрямую не поддерживает чтение файла построчно. Для этого нам нужно обернуть FileReader внутрь экземпляра BufferedReader, который предоставляет метод readLine().

import java.io.BufferedReader;import java.io.FileReader;import java.io.IOException;public class FileReaderExample{public static void main(String[] args) throws IOException{String fileName = "demo.txt";BufferedReader br = new BufferedReader(new FileReader(fileName));try {String line;while((line = br.readLine()) != null) {System.out.println(line);}} finally {br.close();}}}
Прокрутить вверх