Java PipedWriter klasse
De PipedWriter klasse i Java tillader to tråde at kommunikere med hinanden ved at føre data gennem et rør. Denne klasse er nyttig, når vi ønsker, at en del af programmet skal sende data til en anden del uden at gemme dem i hukommelsen.
Funktioner i PipedWriter-klassen:
- Det gør det muligt at skrive data ind i et rør.
- Den bruger en buffer til midlertidigt at gemme data, før den sendes til PipedReader.
- Det fungerer med PipedReader for at sikre sikker dataoverførsel mellem tråde.
- Hvis røret går i stykker, giver det en fejl.
Erklæring om PipedWriter i Java
Erklæringen fra PipedWriter-klassen er:
offentlig klasse PipedWriter udvider Writer
Alle implementerede grænseflader:
- Kan lukkes: Denne grænseflade bruges af klasser, der håndterer ressourcer.
- Skylbar: Denne grænseflade bruges til at skylle data til deres destination.
- Kan tilføjes: Denne grænseflade bruges til at tilføje data til en eksisterende strøm.
- Autolukbar: Denne grænseflade tillader automatisk lukning af ressourcer.
Konstruktører i PipedWriter-klassen
Denne klasse består af to konstruktører, ved hjælp af hvilke vi kan skabe objekter af denne klasse på forskellige måder. Følgende er konstruktørerne tilgængelige i denne klasse:
1. PipedWriter(): Denne konstruktør bruges til at oprette en PipedWriter, som ikke er forbundet til noget endnu.
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 (); } } }
Produktion
Hello from PipedWriter!
2. PipedWriter(PipedReader inStream): Denne konstruktør, vi brugte til at oprette en PipedWriter og forbinder den med 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 (); } } }
Produktion
Hello PipedWriter
Java PipedWriter-metoder
Billedet nedenfor viser metoderne til PipedWriter-klassen.
Nu skal vi diskutere hver metode en efter en i detaljer:
1. skriv(int char): Denne metode bruges til at skrive et enkelt tegn til et rør.
Syntaks:
public void write(int char)
- Parameter: Denne metode tager en parameter, der repræsenterer det tegn, der skal skrives.
- Undtagelse: Denne metode returnerer IOException, hvis der er et problem med I/O-handlingen.
2. skriv(char[] carray int offset int maxlen): Denne metode bruges til at skrive tegn fra et array til røret.
Syntaks:
public void write(char[] carray int offset int maxlen)
- Parameter: Denne metode omfatter tre parametre, som er angivet nedenfor:
- bære: Det er tegnarrayet, der indeholder data
- offset: Det er den position i rækken, hvor man skal begynde at skrive form
- maxlen: Det er det maksimale antal tegn at skrive.
- Undtagelse: Denne metode returnerer IOException, hvis der er et problem med I/O-handlingen.
3. tilslut (PipedReader destination): Denne metode bruges til at forbinde PipedWriter til en PipedReader.
Syntaks:
offentlig void forbindelse (PipedReader destination)
- Parameter: Denne metode tager én parameterdestination, det er PipedReader, som PipedWriter vil forbinde til for dataoverførsel.
- Undtagelse: Denne metode kaster IOException, hvis der opstår en fejl under tilslutning.
4. skyl(): Denne metode bruges til at skylle data i røret.
Syntaks:
public void flush()
- Parameter: Denne metode tager ikke nogen parameter.
- Undtagelse: Denne metode kaster IOException, hvis der opstår en fejl under tømning af data.
5. luk(): Denne metode bruges til at lukke PipedWriter.
Synatx:
public void close()
- Parameter: Denne metode tager ikke nogen parameter.
- Undtagelse: Denne metode kaster IOException, hvis der er et problem med at lukke forfatteren.
Nu vil vi diskutere, hvordan vi kan bruge PipedWriter-klassen til at skrive data og læse dem gennem en tilsluttet 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 (); } }
Produktion
Output from the pipe: J A V A
Java-program, der illustrerer, hvordan PipedWriter-klassemetoder fungerer
Nu vil vi skrive nogle tegn skylle outputtet 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 (); } } }
Produktion
Output after flush(): G E E K S Closing the Writer streamOpret Quiz