A PipedWriter osztály Java nyelven lehetővé teszi, hogy két szál kommunikáljon egymással azáltal, hogy adatokat továbbít egy csövön keresztül. Ez az osztály akkor hasznos, ha azt szeretnénk, hogy a program egy része adatokat küldjön egy másik résznek anélkül, hogy azokat a memóriában tárolná.
A PipedWriter osztály jellemzői:
- Lehetővé teszi adatok csőbe írását.
- Puffert használ az adatok ideiglenes tárolására, mielőtt elküldené azokat a PipedReadernek.
- Együttműködik a PipedReaderrel, hogy biztonságos adatátvitelt biztosítson a szálak között.
- Ha a cső eltörik, hibát jelez.
A PipedWriter nyilatkozata Java nyelven
A PipedWriter osztály nyilatkozata a következő:
nyilvános osztály PipedWriter kiterjeszti Writer-t
Minden megvalósított interfész:
- Zárható: Ezt a felületet az erőforrásokat kezelő osztályok használják.
- Öblíthető: Ez az interfész arra szolgál, hogy az adatokat a rendeltetési helyre ürítse.
- Hozzáfűzhető: Ez az interfész adatok hozzáfűzésére szolgál egy meglévő adatfolyamhoz.
- Automatikus bezárás: Ez az interfész lehetővé teszi az erőforrások automatikus bezárását.
Konstruktorok a PipedWriter osztályban
Ez az osztály két konstruktorból áll, amelyek segítségével többféleképpen hozhatunk létre objektumokat ebből az osztályból. A következő konstruktorok állnak rendelkezésre ebben az osztályban:
1. PipedWriter(): Ezzel a konstruktorral olyan PipedWritert hozhatunk létre, amely még nem kapcsolódik semmihez.
Szintaxis:
PipedWriter()
Példa:
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(); } } }
Kimenet
Hello from PipedWriter!
2. PipedWriter (PipedReader inStream): Ez a konstruktor, amellyel korábban létrehoztunk egy PipedWriter-t, és összekapcsolja egy PipedReaderrel.
Szintaxis:
PipedWriter (PipedReader snk)
Példa:
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(); } } }
Kimenet
Hello PipedWriter
Java PipedWriter módszerek
Az alábbi kép a PipedWriter osztály metódusait mutatja be.

Most az egyes módszereket részletesen tárgyaljuk:
1. írás (int char): Ezt a módszert egyetlen karakter csőbe írására használják.
Szintaxis:
public void írás (int char)
- Paraméter: Ez a módszer egy olyan paramétert vesz fel, amely az írandó karaktert reprezentálja.
- Kivétel: Ez a módszer az IOException értéket adja vissza, ha probléma van az I/O művelettel.
2. write(char[] carray int offset int maxlen): Ezzel a módszerrel karaktereket írhatunk egy tömbből a csőbe.
Szintaxis:
public void write(char[] carray int offset int maxlen)
- Paraméter: Ez a módszer három paramétert tartalmaz, amelyeket az alábbiakban felsorolunk:
- carray: Ez a karaktertömb, amely adatokat tartalmaz
- eltolás: Ez az a pozíció a tömbben, ahol el kell kezdeni az űrlap írását
- maxlen: Ez az írható karakterek maximális száma.
- Kivétel: Ez a módszer az IOException értéket adja vissza, ha probléma van az I/O művelettel.
3. csatlakozás (PipedReader cél): Ez a módszer a PipedWriter és a PipedReader összekapcsolására szolgál.
Szintaxis:
public void connect (PipedReader cél)
- Paraméter: Ez a metódus egy paramétert vesz igénybe, ez a PipedReader, amelyhez a PipedWriter csatlakozik az adatátvitelhez.
- Kivétel: Ez a módszer IOException-t dob, ha hiba történik a csatlakozás során.
4. flush(): Ezt a módszert a csőben lévő adatok öblítésére használják.
Szintaxis:
public void flush()
- Paraméter: Ez a módszer nem vesz fel semmilyen paramétert.
- Kivétel: Ez a módszer IOException-t dob, ha hiba történik az adatok kiürítése közben.
5. bezár(): Ez a módszer a PipedWriter bezárására szolgál.
Synatx:
kijelölés rendezés java-ban
public void bezár()
- Paraméter: Ez a módszer nem vesz fel semmilyen paramétert.
- Kivétel: Ez a metódus IOExceptiont dob, ha probléma van az író bezárásával.
Most megvitatjuk, hogyan használhatjuk a PipedWriter osztályt adatok írására és olvasására egy csatlakoztatott PipedReaderen keresztül.
Példa:
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(); } }
Kimenet
Output from the pipe: J A V A
Java program, amely szemlélteti a PipedWriter osztály módszereinek működését
Most néhány karaktert írunk, majd kiürítjük a kimenetet, és bezárjuk az írót.
Példa:
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(); } } }
Kimenet
Output after flush(): G E E K S Closing the Writer streamKvíz létrehozása