logo

Клас Java PipedWriter

The Клас PipedWriter у Java дозволяє двом потокам спілкуватися один з одним, передаючи дані через канал. Цей клас корисний, коли ми хочемо, щоб одна частина програми надсилала дані іншій частині, не зберігаючи їх у пам’яті.

Особливості класу PipedWriter:

  • Це дозволяє записувати дані в канал.
  • Він використовує буфер для тимчасового зберігання даних перед надсиланням їх у PipedReader.
  • Він працює з PipedReader, щоб забезпечити безпечну передачу даних між потоками.
  • Якщо труба ламається, це видає помилку.

Оголошення PipedWriter у Java

Оголошення класу PipedWriter таке:



публічний клас PipedWriter розширює Writer

Усі реалізовані інтерфейси:

  • Закривається: Цей інтерфейс використовується класами, які обробляють ресурси.
  • Змивний: Цей інтерфейс використовується для передачі даних до місця призначення.
  • Додається: Цей інтерфейс використовується для додавання даних до існуючого потоку.
  • Автозакривається: Цей інтерфейс дозволяє автоматично закривати ресурси.

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

Цей клас складається з двох конструкторів, за допомогою яких ми можемо створювати об’єкти цього класу різними способами. У цьому класі доступні такі конструктори:

1. PipedWriter(): Цей конструктор використовується для створення PipedWriter, який ще ні з чим не підключений.

Синтаксис:

PipedWriter()

gimp змінює колір

приклад:

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): Цей метод використовується для запису одного символу в канал.

Синтаксис:

public void write(int char)

  • Параметр: Цей метод приймає один параметр, який ischar представляє символ, який буде написаний.
  • Виняток: Цей метод повертає IOException, якщо є проблема з операцією введення-виведення.


2. write(char[] carray int offset int maxlen): Цей метод використовується для запису символів з масиву в канал.

Синтаксис:

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

  • Параметр: Цей метод включає три параметри, які перераховані нижче:
    • Керрей: Це масив символів, який містить дані
    • зсув: Це позиція в масиві, з якої починається запис форми
    • Макслен: Це максимальна кількість символів для запису.
  • Виняток: Цей метод повертає IOException, якщо є проблема з операцією введення-виведення.


3. підключення (призначення PipedReader): Цей метод використовується для підключення PipedWriter до PipedReader.

Синтаксис:

середнє проти середнього

public void connect (призначення PipedReader)

  • Параметр: Цей метод приймає один параметр призначення, це PipedReader, до якого PipedWriter підключатиметься для передачі даних.
  • Виняток: Цей метод створює IOException, якщо під час підключення виникає помилка.


4. flush(): Цей метод використовується для очищення даних у каналі.

Синтаксис:

public void flush()

  • Параметр: Цей метод не приймає жодних параметрів.
  • Виняток: Цей метод створює IOException, якщо під час очищення даних виникає помилка.


java ітерація карти

5. close(): Цей метод використовується для закриття PipedWriter.

Synatx:

public void close()

  • Параметр: Цей метод не приймає жодних параметрів.
  • Виняток: Цей метод створює 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 
Створіть вікторину