Java PipedWriter -luokka
The PipedWriter-luokka Javassa mahdollistaa kahden säikeen kommunikoinnin toistensa kanssa kuljettamalla tietoja putken läpi. Tämä luokka on hyödyllinen, kun haluamme yhden ohjelman osan lähettävän tietoja toiseen osaan tallentamatta sitä muistiin.
PipedWriter-luokan ominaisuudet:
- Se mahdollistaa tietojen kirjoittamisen putkeen.
- Se käyttää puskuria tietojen väliaikaiseen tallentamiseen ennen sen lähettämistä PipedReaderille.
- Se toimii PipedReaderin kanssa varmistaakseen turvallisen tiedonsiirron säikeiden välillä.
- Jos putki katkeaa, se antaa virheen.
PipedWriterin julistus Javassa
PipedWriter-luokan ilmoitus on:
julkinen luokka PipedWriter laajentaa Writeriä
Kaikki toteutetut käyttöliittymät:
- Suljettava: Tätä käyttöliittymää käyttävät luokat, jotka käsittelevät resursseja.
- Huuhdeltava: Tätä liitäntää käytetään tietojen huuhtelemiseen määränpäähänsä.
- Lisättävä: Tätä käyttöliittymää käytetään tietojen lisäämiseen olemassa olevaan streamiin.
- Automaattinen sulkeminen: Tämä käyttöliittymä mahdollistaa resurssien automaattisen sulkemisen.
PipedWriter-luokan rakentajat
Tämä luokka koostuu kahdesta konstruktorista, joiden avulla voimme luoda tämän luokan objekteja eri tavoin. Tässä luokassa saatavilla olevat rakentajat:
1. PipedWriter(): Tätä konstruktoria käytetään luomaan PipedWriter, joka ei ole vielä yhteydessä mihinkään.
Syntaksi:
PipedWriter()
Esimerkki:
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 (); } } }
Lähtö
Hello from PipedWriter!
2. PipedWriter (PipedReader inStream): Tämä rakentaja, jota meillä oli tapana luoda PipedWriter ja yhdistää sen PipedReader.
Syntaksi:
PipedWriter (PipedReader snk)
Esimerkki:
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 (); } } }
Lähtö
Hello PipedWriter
Java PipedWriter -menetelmät
Alla oleva kuva esittää PipedWriter-luokan menetelmät.
Nyt aiomme keskustella jokaisesta menetelmästä yksitellen yksityiskohtaisesti:
1. kirjoittaa (int char): Tätä menetelmää käytetään yhden merkin kirjoittamiseen putkeen.
Syntaksi:
julkinen void kirjoittaa (int char)
- Parametri: Tämä menetelmä ottaa yhden parametrin, joka edustaa kirjoitettavaa merkkiä.
- Poikkeus: Tämä menetelmä palauttaa IOExceptionin, jos I/O-toiminnossa on ongelma.
2. write(char[] carray int offset int maxlen): Tätä menetelmää käytetään merkkien kirjoittamiseen taulukosta putkeen.
Syntaksi:
public void write(char[] carray int offset int maxlen)
- Parametri: Tämä menetelmä sisältää kolme parametria, jotka on lueteltu alla:
- carray: Se on merkkijono, joka sisältää dataa
- offset: Se on paikka taulukossa, josta aloitetaan lomakkeen kirjoittaminen
- maxlen: Se on kirjoitettavien merkkien enimmäismäärä.
- Poikkeus: Tämä menetelmä palauttaa IOExceptionin, jos I/O-toiminnossa on ongelma.
3. yhdistä (PipedReader-kohde): Tätä menetelmää käytetään yhdistämään PipedWriter PipedReaderiin.
Syntaksi:
julkinen void -yhteys (PipedReader-kohde)
- Parametri: Tämä menetelmä ottaa yhden parametrin kohteen, joka on PipedReader, johon PipedWriter muodostaa yhteyden tiedonsiirtoa varten.
- Poikkeus: Tämä menetelmä lähettää IOExceptionin, jos yhteyden muodostamisen aikana tapahtuu virhe.
4. huuhtele(): Tätä menetelmää käytetään tietojen huuhtelemiseen putkessa.
Syntaksi:
public void flush()
- Parametri: Tämä menetelmä ei ota mitään parametreja.
- Poikkeus: Tämä menetelmä heittää IOExceptionin, jos tietoja huuhdettaessa tapahtuu virhe.
5. sulje(): Tätä menetelmää käytetään PipedWriterin sulkemiseen.
Synatx:
julkinen void sulje()
- Parametri: Tämä menetelmä ei ota mitään parametreja.
- Poikkeus: Tämä menetelmä heittää IOExceptionin, jos kirjoittajan sulkemisessa on ongelma.
Nyt keskustelemme siitä, kuinka voimme käyttää PipedWriter-luokkaa tietojen kirjoittamiseen ja lukemiseen liitetyn PipedReaderin kautta
Esimerkki:
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 (); } }
Lähtö
Output from the pipe: J A V A
Java-ohjelma, joka havainnollistaa PipedWriter-luokan menetelmien toimintaa
Nyt kirjoitetaan joitain merkkejä huuhtelemalla tulos ja suljetaan kirjoittaja.
Esimerkki:
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 (); } } }
Lähtö
Output after flush(): G E E K S Closing the Writer streamLuo tietokilpailu