Java PipedWriter-klasse
De PipedWriter-klassen i Java lar to tråder kommunisere med hverandre ved å sende data gjennom et rør. Denne klassen er nyttig når vi vil at en del av programmet skal sende data til en annen del uten å lagre det i minnet.
Funksjoner i PipedWriter-klassen:
- Det lar deg skrive data inn i et rør.
- Den bruker en buffer for å lagre data midlertidig før den sendes til PipedReader.
- Det fungerer med PipedReader for å sikre sikker dataoverføring mellom tråder.
- Hvis røret ryker gir det en feil.
Erklæring fra PipedWriter i Java
Erklæringen fra PipedWriter-klassen er:
offentlig klasse PipedWriter utvider Writer
Alle implementerte grensesnitt:
- Kan lukkes: Dette grensesnittet brukes av klasser som håndterer ressurser.
- Spylbar: Dette grensesnittet brukes til å skylle data til destinasjonen.
- Kan legges til: Dette grensesnittet brukes til å legge til data til en eksisterende strøm.
- Autolukkbar: Dette grensesnittet tillater automatisk lukking av ressurser.
Konstruktører i PipedWriter-klassen
Denne klassen består av to konstruktører ved hjelp av hvilke vi kan lage objekter av denne klassen på forskjellige måter. Følgende er konstruktørene som er tilgjengelige i denne klassen:
1. PipedWriter(): Denne konstruktøren brukes til å lage en PipedWriter som ikke er koblet til noe ennå.
Syntaks:
PipedWriter()
Eksempel:
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 (); } } }
Produksjon
Hello from PipedWriter!
2. PipedWriter(PipedReader inStream): Denne konstruktøren vi brukte til å lage en PipedWriter og koble den til en PipedReader.
Syntaks:
PipedWriter(PipedReader snk)
Eksempel:
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 (); } } }
Produksjon
Hello PipedWriter
Java PipedWriter-metoder
Bildet nedenfor viser metodene til PipedWriter-klassen.
Nå skal vi diskutere hver metode en etter en i detalj:
1. skriv(int char): Denne metoden brukes til å skrive et enkelt tegn til et rør.
Syntaks:
offentlig void skrive(int char)
- Parameter: Denne metoden tar en parameter som representerer tegnet som skal skrives.
- Unntak: Denne metoden returnerer IOException hvis det er et problem med I/O-operasjonen.
2. skriv(char[] carray int offset int maxlen): Denne metoden brukes til å skrive tegn fra en matrise til røret.
Syntaks:
public void write(char[] carray int offset int maxlen)
- Parameter: Denne metoden inkluderer tre parametere som er oppført nedenfor:
- bære: Det er tegnarrayen som inneholder data
- offset: Det er posisjonen i matrisen hvor du skal begynne å skrive form
- maxlen: Det er maksimalt antall tegn å skrive.
- Unntak: Denne metoden returnerer IOException hvis det er et problem med I/O-operasjonen.
3. koble til (PipedReader-destinasjon): Denne metoden brukes til å koble PipedWriter til en PipedReader.
Syntaks:
offentlig void-tilkobling (PipedReader-destinasjon)
- Parameter: Denne metoden tar én parameterdestinasjon, det er PipedReader som PipedWriter vil koble til for dataoverføring.
- Unntak: Denne metoden kaster IOException hvis det oppstår en feil under tilkobling.
4. flush(): Denne metoden brukes til å skylle data i røret.
Syntaks:
public void flush()
- Parameter: Denne metoden tar ingen parameter.
- Unntak: Denne metoden kaster IOException hvis det oppstår en feil under tømming av dataene.
5. lukk(): Denne metoden brukes til å lukke PipedWriter.
Synatx:
public void close()
- Parameter: Denne metoden tar ingen parameter.
- Unntak: Denne metoden kaster IOException hvis det er et problem med å lukke skriveren.
Nå skal vi diskutere hvordan vi kan bruke PipedWriter-klassen til å skrive data og lese dem gjennom en tilkoblet PipedReader
Eksempel:
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 (); } }
Produksjon
Output from the pipe: J A V A
Java-program som illustrerer hvordan PipedWriter-klassemetoder fungerer
Nå skal vi skrive noen tegn tømme utdataene og lukke forfatteren.
Eksempel:
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 (); } } }
Produksjon
Output after flush(): G E E K S Closing the Writer streamLag quiz