Java PipedWriter klasė
The PipedWriter klasė Java leidžia dviem gijomis susisiekti tarpusavyje, perduodant duomenis vamzdžiu. Ši klasė naudinga, kai norime, kad viena programos dalis siųstų duomenis į kitą dalį, nesaugodama jų atmintyje.
„PipedWriter“ klasės ypatybės:
- Tai leidžia įrašyti duomenis į vamzdį.
- Jis naudoja buferį, kad laikinai saugotų duomenis prieš siunčiant juos į PipedReader.
- Jis veikia su PipedReader, kad užtikrintų saugų duomenų perdavimą tarp gijų.
- Jei vamzdis lūžta, tai rodo klaidą.
„PipedWriter“ deklaracija „Java“.
„PipedWriter“ klasės deklaracija yra tokia:
viešoji klasė PipedWriter pratęsia Writer
Visos įdiegtos sąsajos:
- Užsidaro: Šią sąsają naudoja klasės, kurios tvarko išteklius.
- Nuplaunamas: Ši sąsaja naudojama duomenims nuplauti į paskirties vietą.
- Pridedama: Ši sąsaja naudojama duomenims pridėti prie esamo srauto.
- Automatinis uždarymas: Ši sąsaja leidžia automatiškai uždaryti išteklius.
Konstruktoriai PipedWriter klasėje
Šią klasę sudaro du konstruktoriai, kurių pagalba galime įvairiai kurti šios klasės objektus. Šioje klasėje galimi šie konstruktoriai:
1. PipedWriter(): Šis konstruktorius naudojamas PipedWriter, kuris dar nėra prijungtas prie nieko, sukurti.
Sintaksė:
PipedWriter ()
Pavyzdys:
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 (); } } }
Išvestis
Hello from PipedWriter!
2. „PipedWriter“ („PipedReader“ sraute): Šis konstruktorius, kurį naudojome, sukuria PipedWriter ir sujungia jį su PipedReader.
Sintaksė:
„PipedWriter“ („PipedReader snk“)
Pavyzdys:
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 (); } } }
Išvestis
Hello PipedWriter
Java PipedWriter metodai
Žemiau esančiame paveikslėlyje pavaizduoti PipedWriter klasės metodai.
Dabar mes išsamiai aptarsime kiekvieną metodą po vieną:
1. rašyti (int char): Šis metodas naudojamas vienam simboliui įrašyti į vamzdį.
Sintaksė:
viešas tuščias rašymas (int char)
- Parametras: Šis metodas paima vieną parametrą, kuris reiškia rašomą simbolį.
- Išimtis: Šis metodas grąžina IOException, jei kyla problemų dėl įvesties / išvesties operacijos.
2. write(char[] carray int offset int maxlen): Šis metodas naudojamas rašant simbolius iš masyvo į vamzdį.
Sintaksė:
public void write(char[] carray int offset int maxlen)
- Parametras: Šis metodas apima tris toliau išvardytus parametrus:
- carray: Tai yra simbolių masyvas, kuriame yra duomenų
- kompensuoti: Tai vieta masyve, nuo kurios pradėti rašyti formą
- Maxlen: Tai didžiausias rašomų simbolių skaičius.
- Išimtis: Šis metodas grąžina IOException, jei kyla problemų dėl įvesties / išvesties operacijos.
3. prisijungti (PipedReader paskirties vieta): Šis metodas naudojamas PipedWriter prijungti prie PipedReader.
Sintaksė:
viešasis ryšys („PipedReader“ paskirties vieta)
- Parametras: Šis metodas reikalauja vieno parametro paskirties vietos, tai yra PipedReader, prie kurio PipedWriter prisijungs, kad galėtų perduoti duomenis.
- Išimtis: Šis metodas pateikia IOException, jei prisijungiant įvyksta klaida.
4. flush(): Šis metodas naudojamas duomenims nuplauti vamzdyje.
Sintaksė:
public void flush ()
- Parametras: Šis metodas nereikalauja jokių parametrų.
- Išimtis: Šis metodas išmeta IOException, jei išplaunant duomenis įvyksta klaida.
5. uždaryti (): Šis metodas naudojamas PipedWriter uždarymui.
Sinatsė:
vieša galia uždaryti ()
- Parametras: Šis metodas nereikalauja jokių parametrų.
- Išimtis: Šis metodas išmeta IOException, jei kyla problemų uždarant rašytoją.
Dabar aptarsime, kaip galime naudoti PipedWriter klasę duomenims rašyti ir skaityti per prijungtą PipedReader
Pavyzdys:
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 (); } }
Išvestis
Output from the pipe: J A V A
Java programa, iliustruojanti PipedWriter klasės metodų veikimą
Dabar mes parašysime kai kuriuos simbolius, praplaukite išvestį ir uždarysime rašytoją.
Pavyzdys:
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 (); } } }
Išvestis
Output after flush(): G E E K S Closing the Writer streamSukurti viktoriną