logo

Java PipedWriter клас

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

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

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

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

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



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

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

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

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

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

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

Синтаксис:

PipedWriter()

полиморфизъм в java

Пример:

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' title=


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

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.

Синтаксис:

низ заменя всички java

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

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


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

Синтаксис:

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

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


java обратен низ

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 
Създаване на тест