Java PipedWriter klasa
The Klasa PipedWriter u Javi omogućuje dvije niti da međusobno komuniciraju prosljeđivanjem podataka kroz cijev. Ova klasa je korisna kada želimo da jedan dio programa šalje podatke drugom dijelu bez pohranjivanja u memoriju.
Značajke klase PipedWriter:
- Omogućuje pisanje podataka u cijev.
- Koristi međuspremnik za privremeno pohranjivanje podataka prije slanja u PipedReader.
- Radi s PipedReaderom kako bi osigurao siguran prijenos podataka između niti.
- Ako cijev pukne, javlja se pogreška.
Deklaracija PipedWritera u Javi
Deklaracija klase PipedWriter je:
javna klasa PipedWriter proširuje Writer
Sva implementirana sučelja:
- Može se zatvoriti: Ovo sučelje koriste klase koje rukuju resursima.
- Mogućnost ispiranja: Ovo se sučelje koristi za ispiranje podataka do odredišta.
- Priključivo: Ovo se sučelje koristi za dodavanje podataka u postojeći tok.
- Automatsko zatvaranje: Ovo sučelje omogućuje automatsko zatvaranje resursa.
Konstruktori u klasi PipedWriter
Ova klasa se sastoji od dva konstruktora uz pomoć kojih objekte ove klase možemo kreirati na različite načine. Sljedeći su konstruktori dostupni u ovoj klasi:
1. PipedWriter(): Ovaj se konstruktor koristi za stvaranje PipedWriter-a koji još ni s čim nije povezan.
Sintaksa:
PipedWriter()
Primjer:
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 (); } } }
Izlaz
Hello from PipedWriter!
2. PipedWriter(PipedReader inStream): Ovaj konstruktor za koji smo koristili stvara PipedWriter i povezuje ga s PipedReaderom.
Sintaksa:
PipedWriter(PipedReader snk)
Primjer:
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 (); } } }
Izlaz
Hello PipedWriter
Java PipedWriter metode
Slika ispod pokazuje metode klase PipedWriter.
Sada ćemo detaljno razmotriti svaku metodu jednu po jednu:
1. napiši (int char): Ova se metoda koristi za upisivanje jednog znaka u cijev.
Sintaksa:
javno prazno pisanje (int char)
- Parametar: Ova metoda uzima jedan parametar koji ischar predstavlja znak koji treba napisati.
- Iznimka: Ova metoda vraća IOException ako postoji problem s I/O operacijom.
2. write(char[] carray int offset int maxlen): Ova se metoda koristi za pisanje znakova iz niza u cijev.
Sintaksa:
public void write(char[] carray int offset int maxlen)
- Parametar: Ova metoda uključuje tri parametra koji su navedeni u nastavku:
- Carray: To je niz znakova koji sadrži podatke
- pomak: To je pozicija u nizu na kojoj se počinje pisati obrazac
- maxlen: To je najveći broj znakova za pisanje.
- Iznimka: Ova metoda vraća IOException ako postoji problem s I/O operacijom.
3. povezivanje (odredište PipedReader): Ova se metoda koristi za povezivanje PipedWriter-a s PipedReader-om.
Sintaksa:
javno prazno povezivanje (PipedReader odredište)
- Parametar: Ova metoda uzima odredište jednog parametra, to je PipedReader na koji će se PipedWriter povezati za prijenos podataka.
- Iznimka: Ova metoda izbacuje IOException ako dođe do pogreške tijekom povezivanja.
4. ispiranje(): Ova se metoda koristi za ispiranje podataka u cijevi.
Sintaksa:
javni void flush()
- Parametar: Ova metoda ne uzima nikakve parametre.
- Iznimka: Ova metoda izbacuje IOException ako dođe do pogreške tijekom ispiranja podataka.
5. zatvori(): Ova se metoda koristi za zatvaranje PipedWritera.
Synatx:
public void close()
- Parametar: Ova metoda ne uzima nikakve parametre.
- Iznimka: Ova metoda izbacuje IOException ako postoji problem sa zatvaranjem programa za pisanje.
Sada ćemo razgovarati o tome kako možemo koristiti klasu PipedWriter za pisanje podataka i njihovo čitanje kroz povezani PipedReader
Primjer:
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 (); } }
Izlaz
Output from the pipe: J A V A
Java program koji ilustrira rad metoda klase PipedWriter
Sada ćemo napisati neke znakove isprazniti izlaz i zatvoriti program za pisanje.
Primjer:
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 (); } } }
Izlaz
Output after flush(): G E E K S Closing the Writer streamNapravi kviz