The Třída PipedReader v Javě je součástí java.io balíček a používá se ke čtení znakových dat z roury. Tato třída umožňuje komunikaci mezi vlákny, kde jedno vlákno zapisuje data pomocí PipedWriter a druhé je čte pomocí PipedReader.
Vlastnosti třídy PipedReader:
- Umožňuje čtení dat potrubím.
- K ukládání dat přijatých z PipedWriter používá vyrovnávací paměť.
- Pracuje s PipedWriter, aby se ujistil, že data jsou bezpečně přenášena mezi vlákny.
- Pokud se potrubí rozbije, vyvolá chybu.
Co je to Pipe v Javě?
V Javě se k propojení dvou vláken používá roura. Jedno vlákno se používá k odesílání dat potrubím a druhé vlákno čte data. Pokud se vlákno, které odesílá data, zastaví nebo zhroutí, potrubí je považováno za přerušené.
Deklarace třídy PipedReader
Deklarace třídy PipedReader je:
public class PipedReader rozšiřuje Reader
Všechna implementovaná rozhraní:
- Uzavíratelné: Toto rozhraní se používá k uzavření streamu a uvolnění zdrojů, když již nejsou potřeba.
- Automatické zavírání: Toto rozhraní umožňuje automatickou správu prostředků v příkazech try-with-resources.
- Čitelný: Toto rozhraní umožňuje čtení dat ze streamu.
Konstruktéři PipedReader
Tato třída se skládá ze čtyř konstruktorů, pomocí kterých můžeme různými způsoby vytvořit objekt této třídy. V této třídě jsou k dispozici následující konstruktory:
1. PipedReader(): Tento konstruktor vytvoří PipedReader, který ještě není připojen k žádnému zapisovači.
Syntax:
public PipedReader()
2. PipedReader (int pipeSize): Tento konstruktor vytvoří aPipedREader se zadanou velikostí kanálu.
Syntax:
public PipedReader (int pSize)
3. PipedReader (PipedWriter src): Tento konstruktor vytvoří PipedReader, který je připojen k PipedWriterStream src.
public PipedReader (PipedWriter src)
4. PipedReader (PipedWriter src int pipeSize): Tento konstruktor vytvoří připojený PipedReader se zadanou velikostí a propojený s daným PipedWriter.
kolik je 10 z 60
Syntax:
public PipedReader (PipedWriter src int pSize)
Metody Java PipedReader
Obrázek níže ukazuje metody třídy PipedReader.

Nyní budeme diskutovat o každé metodě jednu po druhé podrobně:
1. číst(): Tato metoda se používá k získání dalšího znaku z PipedReader. Blokuje se, dokud nejsou k dispozici data ke čtení nebo dojde k chybě.
Syntax:
public int read() vyvolá IOException
- Parametr: Tato metoda nebere žádný parametr.
- Typ vrácení: Tato metoda vrátí další znak jako celé číslo nebo vrátí -1, pokud je dosaženo konce proudu.
Příklad:
Java// Demonstrating the working // of read() method import java.io.*; public class GeeKs { public static void main(String[] args) throws IOException { PipedReader r = new PipedReader(); PipedWriter w = new PipedWriter(); // Connect the reader and writer r.connect(w); // Write data to the PipedWriter w.write(71); System.out.println('Read: ' + (char) r.read()); w.write(69); System.out.println('Read: ' + (char) r.read()); w.write(75); System.out.println('Read: ' + (char) r.read()); } }
Výstup
Read: G Read: E Read: K
2. read(char[] carray int offset int maxlen): Tato metoda se používá ke čtení až maxlen znaků z PipedReader Stream do pole znaků. Metoda se zablokuje, pokud je dosaženo konce streamu nebo je vyvolána výjimka.
Syntax:
public int read(char[] carray int offset int maxlen) vyvolá IOException
- Parametr: Tato metoda zahrnuje tři parametry, které jsou uvedeny níže:
- carray: Je to vyrovnávací paměť, do které se budou načítat data.
- offset: Je to výchozí pozice v poli
- maxlen: Maximální počet znaků, které mají být načteny do pole.
- Typ vrácení: Tato metoda vrátí maxlen bajtů dat jako celočíselnou hodnotu nebo vrátí -1 při dosažení konce toku
Příklad:
Java// Demonstrating the working // of read(char[] carray int offset int maxlen) 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); // Write data to PipedWriter w.write(71); // G w.write(69); // E w.write(75); // K w.write(83); // S // Read data into an array char[] b = new char[5]; r.read(b 0 5); System.out.print('Read characters: '); for (char c : b) { System.out.print(c); } } }
Výstup
Read characters: GEKS
horní index v ilustrátoru
3. zavřít(): Tato metoda se používá k uzavření PipedReader.
Syntax:
public void close() vyvolá IOException
- Parametr: Tato metoda nebere žádný parametr
- Typ vrácení: Tato metoda nic nevrací
Příklad:
Java// Demonstrating the working // of close() method 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); w.write(71); // Close the reader r.close(); System.out.println('Stream closed.'); } }
Výstup
Stream closed.
4. připraven(): Tato metoda se používá ke kontrole, zda je stream připraven ke čtení.
Syntax:
public boolean ready() vyvolá IOException
- Parametr: Tato metoda nebere žádný parametr
- Typ vrácení: Tato metoda vrátí hodnotu true, pokud je proud připraven ke čtení, jinak vrátí hodnotu false.
Příklad:
Java// Demonstrating the working // of ready() method 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); w.write(71); // Check if the stream is ready to be read System.out.println('Stream is ready to be read: ' + r.ready()); } }
Výstup
Stream is ready to be read: true
5. zavřít(): Tato metoda se používá k uzavření proudů PipedReader.
Syntax:
public void close()
- Parametr: Tato metoda nebere žádný parametr.
- Typ vrácení: Tato metoda nic nevrací.
Příklad:
Java// Demonstrating the working // of close() method import java.io.*; public class Geeks{ public static void main(String[] args) { try { // Create a PipedReader and PipedWriter PipedReader r = new PipedReader(); PipedWriter w = new PipedWriter(); // Connect the PipedReader to the PipedWriter r.connect(w); // Write a character to the PipedWriter w.write('A'); // Read and print the character from the PipedReader System.out.println('Read: ' + (char) r.read()); // Output: A // Close the PipedReader stream r.close(); System.out.println('Stream closed.'); } catch (IOException e) { e.printStackTrace(); } } }
Výstup
Read: A Stream closed.Vytvořit kvíz