Java Reader Class
Класът Reader в Java е абстрактен клас за четене на символни потоци. Неговите подкласове ( FileReader BufferedReade ) осигуряват реализации с read() като основния метод за четене на знаци.
- Той имплементира интерфейса Readable, който дефинира метода read(CharBuffer cb).
- Той имплементира интерфейса Closeable, който дефинира метода close() за освобождаване на ресурси.
Читател Декларация на клас читател
Декларацията на клас Reader е дадена по-долу:
публичен абстрактен клас Reader имплементира Readable Closeable
Пример: Прочетете текстов файл символ по знак с помощта на класа Reader.
Java import 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 в работната директория.
Добавете следното съдържание към файла или можете да добавите произволен текст.
Здравейте, добре дошли в Geeks for Geeks
Запазете файла и стартирайте програмата. Програмата ще прочете и покаже съдържанието на example1 .txt като изход.
Конструктори на клас Reader
Има два конструктора, използвани с Java Reader Class, както е споменато по-долу:
- защитен четец(): Създава нов четец на символен поток, чиито критични секции ще се синхронизират в самия четец.
- защитен четец (заключване на обект) : Създава нов четец на символен поток, чиито критични секции ще се синхронизират на дадения обект.
Методи на 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.
Java import 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