logo

Třída Java PipedWriter

The Třída PipedWriter v Javě umožňuje dvěma vláknům vzájemně komunikovat předáváním dat potrubím. Tato třída je užitečná, když chceme, aby jedna část programu posílala data do jiné části, aniž by je ukládala do paměti.

Vlastnosti třídy PipedWriter:

  • Umožňuje zápis dat do roury.
  • Používá vyrovnávací paměť k dočasnému uložení dat před jejich odesláním do PipedReader.
  • Spolupracuje s PipedReader pro zajištění bezpečného přenosu dat mezi vlákny.
  • Pokud se potrubí rozbije, vyvolá chybu.

Deklarace PipedWriter v Javě

Deklarace třídy PipedWriter je:



public class PipedWriter rozšiřuje Writer

Všechna implementovaná rozhraní:

  • Uzavíratelné: Toto rozhraní používají třídy, které zacházejí se zdroji.
  • Splachovatelný: Toto rozhraní se používá k vyprázdnění dat na místo určení.
  • Připojitelné: Toto rozhraní se používá k připojení dat k existujícímu streamu.
  • Automatické zavírání: Toto rozhraní umožňuje automatické uzavření zdrojů.

Konstruktoři ve třídě PipedWriter

Tato třída se skládá ze dvou konstruktorů, s jejichž pomocí můžeme vytvářet objekty této třídy různými způsoby. V této třídě jsou k dispozici následující konstruktory:

1. PipedWriter(): Tento konstruktor se používá k vytvoření PipedWriter, který ještě není k ničemu připojen.

kat timpf sestra

Syntax:

PipedWriter()

Příklad:

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();  }  } } 

Výstup
Hello from PipedWriter!


2. PipedWriter (PipedReader inStream): Tento konstruktor, který jsme použili k vytvoření PipedWriter a připojí jej k PipedReader.

Syntax:

PipedWriter (PipedReader snk)

Příklad:

herec zeenat aman
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();  }  } } 

Výstup
Hello PipedWriter


Metody Java PipedWriter

Obrázek níže ukazuje metody třídy PipedWriter.

Třída io.PipedWriter v Javě' title=


Nyní budeme diskutovat o každé metodě jednu po druhé podrobně:

1. napište (int char): Tato metoda se používá k zápisu jednoho znaku do kanálu.

Syntax:

public void write (int char)

  • Parametr: Tato metoda má jeden parametr, který představuje znak, který má být zapsán.
  • Výjimka: Tato metoda vrátí IOException, pokud dojde k problému s I/O operací.


2. write(char[] carray int offset int maxlen): Tato metoda se používá k zápisu znaků z pole do kanálu.

Syntax:

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

  • Parametr: Tato metoda zahrnuje tři parametry, které jsou uvedeny níže:
    • carray: Je to pole znaků, které obsahuje data
    • offset: Je to pozice v poli, kde začít psát formulář
    • maxlen: Je to maximální počet znaků, které lze napsat.
  • Výjimka: Tato metoda vrátí IOException, pokud dojde k problému s I/O operací.


3. připojit (cíl PipedReader): Tato metoda se používá k připojení PipedWriter k PipedReader.

Syntax:

veřejné void připojení (cíl PipedReader)

  • Parametr: Tato metoda má jeden cílový parametr, kterým je PipedReader, ke kterému se PipedWriter připojí pro přenos dat.
  • Výjimka: Tato metoda vyvolá IOException, pokud během připojování dojde k chybě.


4. flush(): Tato metoda se používá k vyprázdnění dat v potrubí.

awt java

Syntax:

public void flush()

  • Parametr: Tato metoda nebere žádný parametr.
  • Výjimka: Tato metoda vyvolá IOException, pokud dojde k chybě při vyprázdnění dat.


5. zavřít(): Tato metoda se používá k uzavření PipedWriter.

Synatx:

public void close()

  • Parametr: Tato metoda nebere žádný parametr.
  • Výjimka: Tato metoda vyvolá IOException, pokud dojde k problému s zavřením zapisovače.


Nyní probereme, jak můžeme použít třídu PipedWriter k zápisu dat a jejich čtení přes připojený PipedReader

Příklad:

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();   }  } 

Výstup
Output from the pipe: J A V A



Java program ilustrující fungování metod třídy PipedWriter

Nyní napíšeme, že některé znaky vyprázdní výstup a zavřeme zapisovač.

Příklad:

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();  }  } } 

Výstup
Output after flush(): G E E K S Closing the Writer stream 
Vytvořit kvíz