Java PipedWriter клас

Java PipedWriter клас

The Клас PipedWriter в Java позволява на две нишки да комуникират една с друга чрез предаване на данни през канал. Този клас е полезен, когато искаме една част от програмата да изпраща данни към друга част, без да ги съхранява в паметта.

Характеристики на класа PipedWriter:

  • Позволява запис на данни в тръба.
  • Той използва буфер за временно съхраняване на данни, преди да ги изпрати до PipedReader.
  • Работи с PipedReader, за да осигури безопасен трансфер на данни между нишки.
  • Ако тръбата се счупи, извежда грешка.

Декларация на PipedWriter в Java

Декларацията на класа PipedWriter е:

публичен клас PipedWriter разширява Writer

Всички внедрени интерфейси:

  • Затваряне: Този интерфейс се използва от класове, които обработват ресурси.
  • Промиваем: Този интерфейс се използва за изхвърляне на данни до местоназначението им.
  • Допълнително: Този интерфейс се използва за добавяне на данни към съществуващ поток.
  • Автоматично затваряне: Този интерфейс позволява автоматично затваряне на ресурси.

Конструктори в клас PipedWriter

Този клас се състои от два конструктора, с помощта на които можем да създаваме обекти от този клас по различни начини. Следните са наличните конструктори в този клас:

1. PipedWriter(): Този конструктор се използва за създаване на PipedWriter, който все още не е свързан с нищо.

Синтаксис:

PipedWriter()

Пример:

Java
   // Demonstrating the working   // of PipedWriter()   import     java.io.*  ;   class   Geeks     {      public     static     void     main  (  String  []     args  )     {          // Create PipedWriter and PipedReader      PipedWriter     w     =     new     PipedWriter  ();      PipedReader     r     =     new     PipedReader  ();      try     {      // Connect the PipedWriter to the PipedReader      w  .  connect  (  r  );      // Create a thread to write data into the pipe      Thread     writerThread     =     new     Thread  (  new     Runnable  ()     {      public     void     run  ()     {      try     {      w  .  write  (  'Hello from PipedWriter!'  );      w  .  close  ();      }     catch     (  IOException     e  )     {      e  .  printStackTrace  ();      }      }      });      // Create a thread to read data from the pipe      Thread     readerThread     =     new     Thread  (  new     Runnable  ()     {      public     void     run  ()     {      try     {      int     data  ;      while     ((  data     =     r  .  read  ())     !=     -  1  )     {      System  .  out  .  print  ((  char  )     data  );      }      r  .  close  ();      }     catch     (  IOException     e  )     {      e  .  printStackTrace  ();      }      }      });      // Start both threads      writerThread  .  start  ();      readerThread  .  start  ();      // Wait for both threads to finish      writerThread  .  join  ();      readerThread  .  join  ();      }     catch     (  IOException     |     InterruptedException     e  )     {      e  .  printStackTrace  ();      }      }   }   

Изход
Hello from PipedWriter! 


2. PipedWriter (PipedReader inStream): Този конструктор, използван за създаване на PipedWriter и го свързва с PipedReader.

Синтаксис:

PipedWriter(PipedReader snk)

Пример:

Java
   // Demonstrating the working    // PipedWriter(PipedReader snk)   import     java.io.*  ;   public     class   Geeks     {      public     static     void     main  (  String  []     args  )     {      try     {      // Create a PipedReader and a PipedWriter      PipedReader     r     =     new     PipedReader  ();      PipedWriter     w     =     new     PipedWriter  (  r  );         // Create a thread to write data to the PipedWriter      Thread     writerThread     =     new     Thread  (()     ->     {      try     {      w  .  write  (  'Hello PipedWriter'  );      w  .  close  ();         }     catch     (  IOException     e  )     {      e  .  printStackTrace  ();      }      });      // Create a thread to read data from the PipedReader      Thread     readerThread     =     new     Thread  (()     ->     {      try     {      int     data  ;      while     ((  data     =     r  .  read  ())     !=     -  1  )     {      System  .  out  .  print  ((  char  )     data  );         }      }     catch     (  IOException     e  )     {      e  .  printStackTrace  ();      }      });      // Start both threads      writerThread  .  start  ();      readerThread  .  start  ();      // Wait for both threads to finish      writerThread  .  join  ();      readerThread  .  join  ();      }     catch     (  IOException     |     InterruptedException     e  )     {      e  .  printStackTrace  ();      }      }   }   

Изход
Hello PipedWriter 


Методи на Java PipedWriter

Изображението по-долу демонстрира методите на класа PipedWriter.

io.PipedWriter клас в Java


Сега ще обсъдим подробно всеки метод един по един:

1. запис (int char): Този метод се използва за запис на един символ в канал.

Синтаксис:

публичен невалиден запис (int char)

  • Параметър: Този метод приема един параметър, който ischar представлява символа, който ще бъде написан.
  • Изключение: Този метод връща IOException, ако има проблем с I/O операцията.


2. write(char[] carray int offset int maxlen): Този метод се използва за запис на знаци от масив в канала.

Синтаксис:

public void write(char[] carray int offset int maxlen)

  • Параметър: Този метод включва три параметъра, които са изброени по-долу:
    • керей: Това е масивът от знаци, който съдържа данни
    • офсет: Това е позицията в масива, откъдето да започнете да пишете формата
    • макслен: Това е максималният брой знаци за писане.
  • Изключение: Този метод връща IOException, ако има проблем с I/O операцията.


3. свързване (дестинация на PipedReader): Този метод се използва за свързване на PipedWriter към PipedReader.

Синтаксис:

публично празно свързване (дестинация PipedReader)

  • Параметър: Този метод приема дестинация на един параметър, това е PipedReader, към който PipedWriter ще се свърже за пренос на данни.
  • Изключение: Този метод хвърля IOException, ако възникне грешка при свързване.


4. флъш(): Този метод се използва за изчистване на данни в канала.

Синтаксис:

публичен void flush()

  • Параметър: Този метод не приема никакъв параметър.
  • Изключение: Този метод хвърля IOException, ако възникне грешка при изчистване на данните.


5. затвори (): Този метод се използва за затваряне на PipedWriter.

Synatx:

публично невалидно затваряне()

  • Параметър: Този метод не приема никакъв параметър.
  • Изключение: Този метод хвърля IOException, ако има проблем със затварянето на писателя.


Сега ще обсъдим как можем да използваме класа PipedWriter за запис на данни и да ги прочетем чрез свързан PipedReader

Пример:

Java
   // Demonstrating how to use PipedReader    // and PipedWriter to transferr an array    // of characters between two threads   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  );     // Must connect before use       // Writing a char array       char  []     c     =     {  'J'       'A'       'V'       'A'  };         w  .  write  (  c       0       4  );         // Reading blocks if no data is written yet      System  .  out  .  print  (  'Output from the pipe:'  );         for     (  int     i     =     0  ;     i      <     4  ;     i  ++  )     {         System  .  out  .  print  (  ' '     +     (  char  )     r  .  read  ());         }         w  .  close  ();         r  .  close  ();         }      }   

Изход
Output from the pipe: J A V A 



Java програма, илюстрираща работата на методите на клас PipedWriter

Сега ще напишем няколко символа, ще изчистим изхода и ще затворим писателя.

Пример:

Java
   // Java program illustrating the working of PipedWriter    // write() connect    // close() flush()   import     java.io.*  ;   public     class   Geeks     {          public     static     void     main  (  String  []     args  )     throws     IOException     {      PipedReader     r     =     new     PipedReader  ();      PipedWriter     w     =     new     PipedWriter  ();      try     {      // Use of connect(): Connecting the writer to the reader      r  .  connect  (  w  );      // Use of write(int byte): Writing characters to the pipe      w  .  write  (  71  );         w  .  write  (  69  );      w  .  write  (  69  );      w  .  write  (  75  );      w  .  write  (  83  );         // Use of flush() method: Flushing the output to       // make sure all data is written      w  .  flush  ();      System  .  out  .  println  (  'Output after flush():'  );      // Reading from the pipe      for     (  int     i     =     0  ;     i      <     5  ;     i  ++  )     {      System  .  out  .  print  (  ' '     +     (  char  )     r  .  read  ());      }      // Use of close() method: Closing the writer      System  .  out  .  println  (  'nClosing the Writer stream'  );      w  .  close  ();      }     catch     (  IOException     e  )     {      e  .  printStackTrace  ();      }      }   }   

Изход
Output after flush(): G E E K S Closing the Writer stream  
Създаване на тест