Razred Java PipedWriter
The Razred PipedWriter v Javi omogoča dvema nitima medsebojno komunikacijo s posredovanjem podatkov skozi cev. Ta razred je uporaben, ko želimo, da en del programa pošlje podatke drugemu delu, ne da bi jih shranil v pomnilnik.
Lastnosti razreda PipedWriter:
- Omogoča zapisovanje podatkov v cev.
- Uporablja medpomnilnik za začasno shranjevanje podatkov, preden jih pošlje v PipedReader.
- Deluje s PipedReaderjem, da zagotovi varen prenos podatkov med nitmi.
- Če se cev zlomi, se prikaže napaka.
Deklaracija PipedWriter v Javi
Deklaracija razreda PipedWriter je:
javni razred PipedWriter razširja Writer
Vsi implementirani vmesniki:
- Zapiranje: Ta vmesnik uporabljajo razredi, ki obravnavajo vire.
- Splaknjen: Ta vmesnik se uporablja za izpiranje podatkov na cilj.
- Dodatno: Ta vmesnik se uporablja za dodajanje podatkov obstoječemu toku.
- Samodejno zapiranje: Ta vmesnik omogoča samodejno zapiranje virov.
Konstruktorji v razredu PipedWriter
Ta razred je sestavljen iz dveh konstruktorjev, s pomočjo katerih lahko ustvarjamo objekte tega razreda na različne načine. V tem razredu so na voljo naslednji konstruktorji:
1. PipedWriter(): Ta konstruktor se uporablja za ustvarjanje PipedWriter, ki še ni povezan z ničemer.
Sintaksa:
PipedWriter()
primer:
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 (); } } }
Izhod
Hello from PipedWriter!
2. PipedWriter (PipedReader inStream): Ta konstruktor, ki smo ga uporabljali, da ustvari PipedWriter in ga poveže s PipedReaderjem.
Sintaksa:
PipedWriter(PipedReader snk)
primer:
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 (); } } }
Izhod
Hello PipedWriter
Metode Java PipedWriter
Spodnja slika prikazuje metode razreda PipedWriter.
Zdaj bomo podrobno razpravljali o vsaki metodi posebej:
1. napiši (int char): Ta metoda se uporablja za pisanje enega znaka v cev.
Sintaksa:
javno prazno pisanje (int char)
- Parameter: Ta metoda vzame en parameter, ki predstavlja znak, ki ga je treba napisati.
- Izjema: Ta metoda vrne IOException, če pride do težave z V/I operacijo.
2. write(char[] carray int offset int maxlen): Ta metoda se uporablja za pisanje znakov iz matrike v cev.
Sintaksa:
public void write(char[] carray int offset int maxlen)
- Parameter: Ta metoda vključuje tri parametre, ki so navedeni spodaj:
- carray: To je niz znakov, ki vsebuje podatke
- odmik: To je položaj v matriki, kjer se začne pisanje obrazca
- maxlen: To je največje število znakov za pisanje.
- Izjema: Ta metoda vrne IOException, če pride do težave z V/I operacijo.
3. povezava (destinacija PipedReader): Ta metoda se uporablja za povezavo PipedWriter s PipedReaderjem.
Sintaksa:
javna prazna povezava (destinacija PipedReader)
- Parameter: Ta metoda ima cilj enega parametra, to je PipedReader, s katerim se bo PipedWriter povezal za prenos podatkov.
- Izjema: Ta metoda vrže izjemo IOException, če med povezovanjem pride do napake.
4. flush(): Ta metoda se uporablja za izpiranje podatkov v cevi.
Sintaksa:
javni void flush()
- Parameter: Ta metoda ne zajema nobenega parametra.
- Izjema: Ta metoda sproži izjemo IOException, če med izpiranjem podatkov pride do napake.
5. zapri(): Ta metoda se uporablja za zapiranje PipedWriter.
Synatx:
public void close()
- Parameter: Ta metoda ne zajema nobenega parametra.
- Izjema: Ta metoda vrže izjemo IOException, če pride do težave z zapiranjem zapisovalnika.
Zdaj bomo razpravljali o tem, kako lahko uporabimo razred PipedWriter za pisanje podatkov in njihovo branje prek povezanega PipedReaderja
primer:
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 (); } }
Izhod
Output from the pipe: J A V A
Program Java, ki ponazarja delovanje metod razreda PipedWriter
Zdaj bomo zapisali nekaj znakov, izpraznili izhod in zaprli zapisovalnik.
primer:
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 (); } } }
Izhod
Output after flush(): G E E K S Closing the Writer streamUstvari kviz