Клас Java PipedReader
The Клас PipedReader в Java є частиною java.io пакет і використовується для читання символьних даних із каналу. Цей клас дозволяє обмінюватися між потоками, коли один потік записує дані за допомогою PipedWriter, а інший читає їх за допомогою PipedReader.
Особливості класу PipedReader:
- Це дозволяє зчитувати дані через канал.
- Він використовує буфер для зберігання даних, отриманих від PipedWriter.
- Він працює з PipedWriter, щоб переконатися, що дані передаються безпечно між потоками.
- Якщо труба ламається, це видає помилку.
Що таке труба в Java?
У Java канал використовується для зв'язування двох потоків. Один потік використовується для надсилання даних через канал, а інший потік зчитує дані. Якщо потік, який надсилає дані, зупиняється або виходить з ладу, канал вважається зламаним.
Оголошення класу PipedReader
Оголошення класу PipedReader таке:
відкритий клас PipedReader розширює Reader
Усі реалізовані інтерфейси:
- Закривається: Цей інтерфейс використовується для закриття потоку та звільнення ресурсів, коли вони більше не потрібні.
- Автозакривається: Цей інтерфейс дозволяє автоматично керувати ресурсами в операторах try-with-resources.
- Читається: Цей інтерфейс дозволяє зчитувати дані з потоку.
Конструктори PipedReader
Цей клас складається з чотирьох конструкторів, за допомогою яких ми можемо створювати об'єкт цього класу різними способами. У цьому класі доступні такі конструктори:
1. PipedReader(): Цей конструктор створює PipedReader, який ще не підключений до жодного записувача.
Синтаксис:
public PipedReader()
2. PipedReader(int pipeSize): Цей конструктор створює PipedReader із заданим розміром каналу.
Синтаксис:
public PipedReader(int pSize)
3. PipedReader(PipedWriter src): Цей конструктор створює PipedReader, підключений до PipedWriterStream src.
публічний PipedReader(PipedWriter src)
4. PipedReader(PipedWriter src int pipeSize): Цей конструктор створює підключений PipedReader із заданим розміром і пов’язаний із заданим PipedWriter.
Синтаксис:
public PipedReader(PipedWriter src int pSize)
Java PipedReaderMethods
На зображенні нижче показано методи класу PipedReader.
Тепер ми докладніше обговоримо кожен метод окремо:
1. read(): Цей метод використовується для отримання наступного символу з PipedReader. Він блокується, доки не з’являться дані для зчитування або виникнення помилки.
Синтаксис:
public int read() створює виключення IOException
- Параметр: Цей метод не приймає жодних параметрів.
- Тип повернення: Цей метод повертає наступний символ як ціле число або повертає -1, якщо досягнуто кінця потоку.
приклад:
Java // Demonstrating the working // of read() method import java.io.* ; public class GeeKs { public static void main ( String [] args ) throws IOException { PipedReader r = new PipedReader (); PipedWriter w = new PipedWriter (); // Connect the reader and writer r . connect ( w ); // Write data to the PipedWriter w . write ( 71 ); System . out . println ( 'Read: ' + ( char ) r . read ()); w . write ( 69 ); System . out . println ( 'Read: ' + ( char ) r . read ()); w . write ( 75 ); System . out . println ( 'Read: ' + ( char ) r . read ()); } }
Вихід
Read: G Read: E Read: K
2. read(char[] carray int offset int maxlen): Цей метод використовується для читання символів до maxlen з потоку PipedReader до масиву символів. Метод блокується, якщо досягнуто кінця потоку або виникне виняткова ситуація.
Синтаксис:
public int read(char[] carray int offset int maxlen) створює IOException
- Параметр: Цей метод включає три параметри, які перераховані нижче:
- Керрей: Це буфер, у який зчитуються дані.
- зсув: Це початкова позиція в масиві
- Макслен: Максимальна кількість символів для читання в масиві.
- Тип повернення: Цей метод повертає максимальну кількість байтів даних як ціле число або повертає -1, якщо досягнуто кінця потоку
приклад:
Java // Demonstrating the working // of read(char[] carray int offset int maxlen) import java.io.* ; public class Geeks { public static void main ( String [] args ) throws IOException { PipedReader r = new PipedReader (); PipedWriter w = new PipedWriter (); r . connect ( w ); // Write data to PipedWriter w . write ( 71 ); // G w . write ( 69 ); // E w . write ( 75 ); // K w . write ( 83 ); // S // Read data into an array char [] b = new char [ 5 ] ; r . read ( b 0 5 ); System . out . print ( 'Read characters: ' ); for ( char c : b ) { System . out . print ( c ); } } }
Вихід
Read characters: GEKS
3. close(): Цей метод використовується для закриття PipedReader.
Синтаксис:
public void close() створює IOException
- Параметр: Цей метод не приймає жодних параметрів
- Тип повернення: Цей метод нічого не повертає
приклад:
Java // Demonstrating the working // of close() method import java.io.* ; public class Geeks { public static void main ( String [] args ) throws IOException { PipedReader r = new PipedReader (); PipedWriter w = new PipedWriter (); r . connect ( w ); w . write ( 71 ); // Close the reader r . close (); System . out . println ( 'Stream closed.' ); } }
Вихід
Stream closed.
4. готовий(): Цей метод використовується для перевірки готовності потоку до читання.
Синтаксис:
public boolean ready() створює IOException
- Параметр: Цей метод не приймає жодних параметрів
- Тип повернення: Цей метод повертає true, якщо потік готовий до читання, інакше він повертає false.
приклад:
Java // Demonstrating the working // of ready() method import java.io.* ; public class Geeks { public static void main ( String [] args ) throws IOException { PipedReader r = new PipedReader (); PipedWriter w = new PipedWriter (); r . connect ( w ); w . write ( 71 ); // Check if the stream is ready to be read System . out . println ( 'Stream is ready to be read: ' + r . ready ()); } }
Вихід
Stream is ready to be read: true
5. close(): Цей метод використовується для закриття потоків PipedReader.
Синтаксис:
public void close()
- Параметр: Цей метод не приймає жодних параметрів.
- Тип повернення: Цей метод нічого не повертає.
приклад:
Java // Demonstrating the working // of close() method import java.io.* ; public class Geeks { public static void main ( String [] args ) { try { // Create a PipedReader and PipedWriter PipedReader r = new PipedReader (); PipedWriter w = new PipedWriter (); // Connect the PipedReader to the PipedWriter r . connect ( w ); // Write a character to the PipedWriter w . write ( 'A' ); // Read and print the character from the PipedReader System . out . println ( 'Read: ' + ( char ) r . read ()); // Output: A // Close the PipedReader stream r . close (); System . out . println ( 'Stream closed.' ); } catch ( IOException e ) { e . printStackTrace (); } } }
Вихід
Read: A Stream closed.Створіть вікторину