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, як зазначено нижче:
- захищений Reader(): Створює новий зчитувач потоку символів, критичні розділи якого синхронізуватимуться на самому зчитувачі.
- захищений Reader (блокування об'єктів) : створює новий засіб читання потоку символів, критичні розділи якого синхронізуватимуться на заданому об’єкті.
Методи Java Reader Class
| метод | опис |
|---|---|
| абстрактна порожнеча close() | Закриває потік і звільняє ресурси. |
| void mark(int readAheadLimit) | Позначає поточну позицію в потоці. |
| логічне значення markSupported() | Перевіряє, чи підтримуються операції позначення/скидання. |
| int read() | Читає один символ із потоку. Повертає -1, якщо досягнуто кінця. |
| int read(char[] cbuf) | Зчитує кілька символів у масив. |
| abstract int read(char[] cbuf int off int len) | Зчитує частину масиву, починаючи зі зсуву off для довжини len. |
| int read(CharBuffer target) | Читає символи в об’єкт 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