The Trieda PipedWriter v jazyku Java umožňuje dvom vláknam vzájomnú komunikáciu prenosom údajov cez potrubie. Táto trieda je užitočná, keď chceme, aby jedna časť programu posielala dáta inej časti bez ich uloženia do pamäte.
Vlastnosti triedy PipedWriter:
- Umožňuje zapisovanie údajov do potrubia.
- Používa vyrovnávaciu pamäť na dočasné uloženie údajov pred ich odoslaním do PipedReader.
- Spolupracuje s PipedReaderom na zaistenie bezpečného prenosu dát medzi vláknami.
- Ak sa potrubie zlomí, vyvolá chybu.
Vyhlásenie PipedWriter v Jave
Vyhlásenie triedy PipedWriter je:
public class PipedWriter rozširuje Writer
Všetky implementované rozhrania:
- Uzatvárateľné: Toto rozhranie používajú triedy, ktoré manipulujú so zdrojmi.
- Splachovateľné: Toto rozhranie sa používa na vyprázdnenie údajov na miesto určenia.
- Pripojiteľné: Toto rozhranie sa používa na pripojenie údajov k existujúcemu streamu.
- Automatické zatváranie: Toto rozhranie umožňuje automatické zatváranie zdrojov.
Konštruktory v triede PipedWriter
Táto trieda pozostáva z dvoch konštruktorov, pomocou ktorých môžeme vytvárať objekty tejto triedy rôznymi spôsobmi. V tejto triede sú dostupné nasledujúce konštruktory:
1. PipedWriter(): Tento konštruktor sa používa na vytvorenie PipedWriter, ktorý ešte nie je k ničomu pripojený.
Syntax:
PipedWriter()
Prí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 konštruktor, ktorý sme použili na vytvorenie PipedWriter a pripojil ho k PipedReader.
Syntax:
PipedWriter (PipedReader snk)
Príklad:
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
Metódy Java PipedWriter
Obrázok nižšie ukazuje metódy triedy PipedWriter.

Teraz budeme diskutovať o každej metóde jeden po druhom podrobne:
1. napíšte (int char): Táto metóda sa používa na zápis jedného znaku do potrubia.
Syntax:
normalizácia v databáze
public void write (int char)
- Parameter: Táto metóda má jeden parameter, ktorý predstavuje znak, ktorý sa má zapísať.
- Výnimka: Táto metóda vráti IOException, ak sa vyskytne problém s I/O operáciou.
2. write(char[] carray int offset int maxlen): Táto metóda sa používa na zápis znakov z poľa do potrubia.
Syntax:
public void write(char[] carray int offset int maxlen)
- Parameter: Táto metóda zahŕňa tri parametre, ktoré sú uvedené nižšie:
- carray: Je to pole znakov, ktoré obsahuje údaje
- posun: Je to pozícia v poli, kde začať písať formulár
- maxlen: Je to maximálny počet znakov na napísanie.
- Výnimka: Táto metóda vráti IOException, ak sa vyskytne problém s I/O operáciou.
3. pripojiť (cieľ PipedReader): Táto metóda sa používa na pripojenie PipedWriter k PipedReader.
Syntax:
public void connect (destinácia PipedReader)
- Parameter: Táto metóda má cieľ s jedným parametrom, ktorým je PipedReader, ku ktorému sa PipedWriter pripojí na prenos údajov.
- Výnimka: Táto metóda vyvolá IOException, ak sa pri pripájaní vyskytne chyba.
4. flush(): Táto metóda sa používa na preplachovanie údajov v potrubí.
Syntax:
public void flush()
- Parameter: Táto metóda neberie žiadny parameter.
- Výnimka: Táto metóda vyvolá výnimku IOException, ak sa vyskytne chyba počas vyprázdnenia údajov.
5. zavrieť(): Táto metóda sa používa na zatvorenie PipedWriter.
Synatx:
ridhima tiwari
public void close()
- Parameter: Táto metóda neberie žiadny parameter.
- Výnimka: Táto metóda vyvolá IOException, ak sa vyskytne problém so zatvorením zapisovača.
Teraz budeme diskutovať o tom, ako môžeme použiť triedu PipedWriter na zapisovanie údajov a ich čítanie cez pripojený PipedReader
Prí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
Program Java ilustrujúci fungovanie metód triedy PipedWriter
Teraz napíšeme, že niektoré znaky vyprázdnia výstup a zatvoríme zapisovač.
Prí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 streamVytvoriť kvíz