Јава ПипедВритер Цласс
Тхе Класа ПипедВритер у Јави омогућава две нити да комуницирају једна са другом пропуштањем података кроз цев. Ова класа је корисна када желимо да један део програма шаље податке другом делу без складиштења у меморији.
Карактеристике класе ПипедВритер:
- Омогућава уписивање података у цев.
- Користи бафер за привремено складиштење података пре него што их пошаље у ПипедРеадер.
- Ради са ПипедРеадер-ом како би осигурао безбедан пренос података између нити.
- Ако се цев поквари, јавља се грешка.
Декларација ПипедВритер-а у Јави
Декларација класе ПипедВритер је:
јавна класа ПипедВритер проширује Вритер
Сви имплементирани интерфејси:
- Затварање: Овај интерфејс користе класе које рукују ресурсима.
- Може се испирати: Овај интерфејс се користи за избацивање података на одредиште.
- Може се додати: Овај интерфејс се користи за додавање података у постојећи ток.
- АутоЦлосеабле: Овај интерфејс омогућава аутоматско затварање ресурса.
Конструктори у класи ПипедВритер
Ова класа се састоји од два конструктора уз помоћ којих можемо креирати објекте ове класе на различите начине. Следећи су конструктори доступни у овој класи:
1. ПипедВритер(): Овај конструктор се користи за креирање ПипедВритер-а који још није повезан ни са чим.
Синтакса:
ПипедВритер()
Пример:
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 (); } } }
Излаз
Hello from PipedWriter!
2. ПипедВритер(ПипедРеадер инСтреам): Овај конструктор који смо користили да креирамо ПипедВритер и повезујемо га са ПипедРеадер-ом.
Синтакса:
ПипедВритер(ПипедРеадер снк)
Пример:
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 (); } } }
Излаз
Hello PipedWriter
Јава ПипедВритер методе
Слика испод показује методе класе ПипедВритер.
Сада ћемо детаљно разговарати о свакој методи један по један:
1. написати (инт цхар): Овај метод се користи за уписивање једног знака у цев.
Синтакса:
публиц воид врите (инт цхар)
- Параметар: Овај метод узима један параметар који исцхар представља карактер који треба написати.
- Изузетак: Овај метод враћа ИОЕкцептион ако постоји проблем са И/О операцијом.
2. врите(цхар[] царраи инт оффсет инт маклен): Овај метод се користи за писање знакова из низа у цев.
Синтакса:
публиц воид врите(цхар[] царраи инт оффсет инт маклен)
- Параметар: Овај метод укључује три параметра која су наведена у наставку:
- носи: То је низ знакова који садржи податке
- офсет: То је позиција у низу на којој треба започети писање форме
- маклен: То је максималан број знакова за писање.
- Изузетак: Овај метод враћа ИОЕкцептион ако постоји проблем са И/О операцијом.
3. повежите (одредиште ПипедРеадер-а): Овај метод се користи за повезивање ПипедВритер-а са ПипедРеадер-ом.
Синтакса:
публиц воид цоннецт (одредиште ПипедРеадер-а)
- Параметар: Овај метод узима једно одредиште параметра, то је ПипедРеадер на који ће се ПипедВритер повезати ради преноса података.
- Изузетак: Овај метод баца ИОЕкцептион ако дође до грешке током повезивања.
4. флусх(): Овај метод се користи за испирање података у цеви.
Синтакса:
публиц воид флусх()
- Параметар: Овај метод не узима ниједан параметар.
- Изузетак: Овај метод баца ИОЕкцептион ако дође до грешке приликом испирања података.
5. затвори(): Овај метод се користи за затварање ПипедВритер-а.
Синатк:
публиц воид цлосе()
- Параметар: Овај метод не узима ниједан параметар.
- Изузетак: Овај метод баца ИОЕкцептион ако постоји проблем са затварањем писача.
Сада ћемо разговарати о томе како можемо да користимо класу ПипедВритер за писање података и читање преко повезаног ПипедРеадер-а
Пример:
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 (); } }
Излаз
Output from the pipe: J A V A
Јава програм који илуструје рад метода класе ПипедВритер
Сада ћемо написати неке знакове, испразнити излаз и затворити писац.
Пример:
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 (); } } }
Излаз
Output after flush(): G E E K S Closing the Writer streamКреирај квиз