Клас Java PipedReader

Клас 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.

io.PipedReader Клас у Java


Тепер ми докладніше обговоримо кожен метод окремо:

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.  
Створіть вікторину