Класс FileReader
Класс FileReader используется для чтения
символьных данных из файла. Он наследуется от
класса InputStreamReader и работает с
текстовыми файлами, преобразуя байты в символы
с помощью кодировки по умолчанию. В конструктор
мы передаём объект File, строку с путём
к файлу или объект FileDescriptor. Класс
поддерживает чтение по одному символу через
метод read и чтение в массив символов
через перегруженную версию этого метода. После
завершения работы поток необходимо закрыть
методом close или использовать
конструкцию try-with-resources.
Синтаксис
FileReader reader = new FileReader("path/to/file.txt");
FileReader reader = new FileReader(new File("path/to/file.txt"));
Пример
Давайте создадим файл, запишем в него строку
и прочитаем её посимвольно с помощью
FileReader:
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class Main
{
public static void main(String[] args)
{
try (FileWriter writer = new FileWriter("test.txt"))
{
writer.write("abcde");
}
catch (IOException e)
{
e.printStackTrace();
}
try (FileReader reader = new FileReader("test.txt"))
{
int ch;
while ((ch = reader.read()) != -1)
{
System.out.print((char) ch);
}
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
Результат выполнения кода:
"abcde"
Пример
Давайте прочитаем содержимое файла в массив символов и выведем его на экран:
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class Main
{
public static void main(String[] args)
{
try (FileWriter writer = new FileWriter("test.txt"))
{
writer.write("12345");
}
catch (IOException e)
{
e.printStackTrace();
}
try (FileReader reader = new FileReader("test.txt"))
{
char[] buffer = new char[5];
int count = reader.read(buffer);
System.out.println("Прочитано символов: " + count);
System.out.println(new String(buffer, 0, count));
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
Результат выполнения кода:
"Прочитано символов: 5"
"12345"
Пример
Давайте посмотрим, что вернёт метод read,
когда файл закончится. При достижении конца
файла метод возвращает -1:
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
public class Main
{
public static void main(String[] args)
{
try (FileWriter writer = new FileWriter("test.txt"))
{
writer.write("ab");
}
catch (IOException e)
{
e.printStackTrace();
}
try (FileReader reader = new FileReader("test.txt"))
{
System.out.println(reader.read());
System.out.println(reader.read());
System.out.println(reader.read());
}
catch (IOException e)
{
e.printStackTrace();
}
}
}
Результат выполнения кода:
97
98
-1
Смотрите также
-
класс
FileWriter,
который записывает символы в файл -
класс
InputStreamReader,
который читает байты и декодирует их в символы -
класс
BufferedReader,
который буферизует чтение символов -
класс
FileInputStream,
который читает байты из файла