Clasa Java PipedWriter
The Clasa PipedWriter în Java permite două fire să comunice între ele prin trecerea datelor printr-o conductă. Această clasă este utilă atunci când dorim ca o parte a programului să trimită date către o altă parte fără a le stoca în memorie.
Caracteristici ale clasei PipedWriter:
- Permite scrierea datelor într-o conductă.
- Utilizează un buffer pentru a stoca temporar datele înainte de a le trimite către PipedReader.
- Funcționează cu PipedReader pentru a asigura transferul sigur de date între fire.
- Daca teava se rupe, se produce o eroare.
Declarația PipedWriter în Java
Declarația clasei PipedWriter este:
clasa publică PipedWriter extinde Writer
Toate interfețele implementate:
- Închidere: Această interfață este folosită de clasele care gestionează resurse.
- Flushable: Această interfață este utilizată pentru a șterge datele la destinație.
- Anexabil: Această interfață este utilizată pentru a adăuga date la un flux existent.
- Închidere automată: Această interfață permite închiderea automată a resurselor.
Constructori din clasa PipedWriter
Această clasă este formată din doi constructori cu ajutorul cărora putem crea obiecte din această clasă în moduri diferite. Următorii sunt constructorii disponibili în această clasă:
1. PipedWriter(): Acest constructor este folosit pentru a crea un PipedWriter care nu este încă conectat la nimic.
Sintaxă:
PipedWriter()
Exemplu:
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 (); } } }
Ieșire
Hello from PipedWriter!
2. PipedWriter (PipedReader inStream): Acest constructor folosit pentru a crea un PipedWriter și îl conectează la un PipedReader.
Sintaxă:
PipedWriter (snk PipedReader)
Exemplu:
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 (); } } }
Ieșire
Hello PipedWriter
Metode Java PipedWriter
Imaginea de mai jos demonstrează metodele clasei PipedWriter.
Acum vom discuta despre fiecare metodă una câte una în detaliu:
1. scrie (int char): Această metodă este folosită pentru a scrie un singur caracter într-un pipe.
Sintaxă:
public void write(int char)
- Parametru: Această metodă ia un parametru care reprezintă caracterul care urmează să fie scris.
- Excepţie: Această metodă returnează IOException dacă există o problemă cu operația I/O.
2. scrie(char[] carray int offset int maxlen): Această metodă este folosită pentru a scrie caractere dintr-o matrice în conductă.
Sintaxă:
public void write(char[] carray int offset int maxlen)
- Parametru: Această metodă include trei parametri care sunt enumerați mai jos:
- carray: Este matricea de caractere care conține date
- compensare: Este poziția din matrice de unde să începeți să scrieți formularul
- maxlen: Este numărul maxim de caractere de scris.
- Excepţie: Această metodă returnează IOException dacă există o problemă cu operația I/O.
3. conectați (destinație PipedReader): Această metodă este folosită pentru a conecta PipedWriter la un PipedReader.
Sintaxă:
public void connect (destinație PipedReader)
- Parametru: Această metodă ia o destinație de parametru, acesta este PipedReader la care PipedWriter se va conecta pentru transferul de date.
- Excepţie: Această metodă aruncă IOException dacă apare o eroare în timpul conectării.
4. spălare(): Această metodă este utilizată pentru a spăla datele din conductă.
Sintaxă:
spălare public void()
- Parametru: Această metodă nu ia niciun parametru.
- Excepţie: Această metodă aruncă IOException dacă apare o eroare în timpul spălării datelor.
5. închide(): Această metodă este folosită pentru a închide PipedWriter.
Synatx:
vid public close()
- Parametru: Această metodă nu ia niciun parametru.
- Excepţie: Această metodă aruncă IOException dacă există o problemă cu închiderea scriitorului.
Acum vom discuta cum putem folosi clasa PipedWriter pentru a scrie date și a le citi printr-un PipedReader conectat
Exemplu:
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 (); } }
Ieșire
Output from the pipe: J A V A
Program Java care ilustrează funcționarea metodelor clasei PipedWriter
Acum vom scrie câteva caractere care vor șterge rezultatul și vom închide scriitorul.
Exemplu:
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 (); } } }
Ieșire
Output after flush(): G E E K S Closing the Writer streamCreați un test