Třída Java PipedReader
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.
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
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