Класът Reader в Java е абстрактен клас за четене на символни потоци. Неговите подкласове ( FileReader BufferedReade ) осигуряват реализации с read() като основния метод за четене на знаци.
- Той имплементира интерфейса Readable, който дефинира метода read(CharBuffer cb).
- Той имплементира интерфейса Closeable, който дефинира метода close() за освобождаване на ресурси.
Декларация на клас читател
Декларацията на клас Reader е дадена по-долу:
разделител java
публичен абстрактен клас Reader имплементира Readable Closeable
Пример: Прочетете текстов файл символ по знак с помощта на класа Reader.
Javaimport java.io.*; public class Geeks { public static void main(String[] args) { try { // Create a FileReader object which is a subclass of Reader Reader r = new FileReader('example1.txt'); // Read one character at a time from the file int data = r.read(); while (data != -1) { // Convert the int to char and print System.out.print((char)data); data = r.read(); } // Close the reader r.close(); } catch (Exception ex) { System.out.println('An error occurred: ' + ex.getMessage()); } } }
Изход:
Забележка: За да сте сигурни, че програмата работи правилно, създайте файл с име example1.txt в работната директория.
Добавете следното съдържание към файла или можете да добавите произволен текст.
10 1 милион
Здравейте, добре дошли в Geeks for Geeks
Запазете файла и стартирайте програмата. Програмата ще прочете и покаже съдържанието на example1.txtкато изход.
Конструктори на клас Reader
Има два конструктора, използвани с Java Reader Class, както е споменато по-долу:
подниз в bash
- защитен четец(): Създава нов четец на символен поток, чиито критични секции ще се синхронизират в самия четец.
- защитен четец (заключване на обект) : Създава нов четец на символен поток, чиито критични секции ще се синхронизират на дадения обект.
Методи на Java Reader Class
| Метод | Описание |
|---|---|
| абстрактно празно затваряне () | Затваря потока и освобождава ресурси. |
| void mark (int readAheadLimit) | Маркира текущата позиция в потока. |
| булево markSupported() | Проверява дали операциите за маркиране/нулиране се поддържат. |
| int read() | Чете един символ от потока. Връща -1, ако краят е достигнат. |
| int read(char[] cbuf) | Чете няколко знака в масив. |
| abstract int read(char[] cbuf int off int len) | Чете част от масива, започвайки от отместване за дължина len. |
| int read(цел на CharBuffer) | Чете знаци в обект CharBuffer. |
| void reset() | Нулира потока до позицията на най-новата маркировка. |
| дълго прескачане (дълго n) | Пропуска определения брой знаци. |
Пример: Програмата по-долу демонстрира работата на различни функционалности на класа Reader в Java.
Javaimport java.io.*; import java.nio.CharBuffer; import java.util.Arrays; public class Geeks { public static void main(String[] args) throws IOException { // Open a file reader Reader r = new FileReader('file.txt'); PrintStream out = System.out; // Create a character array and CharBuffer char[] buffer = new char[10]; CharBuffer charBuffer = CharBuffer.wrap(buffer); // Check if the reader supports marking if (r.markSupported()) { r.mark(100); // Mark the current position out.println('mark method is supported'); } // Skip 5 characters in the stream r.skip(5); // Check if the stream is ready to read if (r.ready()) { // Read 10 characters into the buffer r.read(buffer 0 10); out.println('Buffer after reading 10 chars: ' + Arrays.toString(buffer)); // Read characters into the CharBuffer r.read(charBuffer); out.println( 'CharBuffer contents: ' + Arrays.toString(charBuffer.array())); // Read a single character out.println('Next character: ' + (char)r.read()); } // Close the reader r.close(); } }
Изход:
Внедряване на класове за читатели
Някои от реализациите на класове Reader в Java са споменати по-долу:
- BufferedReader
- CharArrayReader
- FilterReader
- InputStreamReader
- PipedReader
- StringReader