Java PipedWriter-klasse

Java PipedWriter-klasse

De PipedWriter-klassen i Java lar to tråder kommunisere med hverandre ved å sende data gjennom et rør. Denne klassen er nyttig når vi vil at en del av programmet skal sende data til en annen del uten å lagre det i minnet.

Funksjoner i PipedWriter-klassen:

  • Det lar deg skrive data inn i et rør.
  • Den bruker en buffer for å lagre data midlertidig før den sendes til PipedReader.
  • Det fungerer med PipedReader for å sikre sikker dataoverføring mellom tråder.
  • Hvis røret ryker gir det en feil.

Erklæring fra PipedWriter i Java

Erklæringen fra PipedWriter-klassen er:

offentlig klasse PipedWriter utvider Writer

Alle implementerte grensesnitt:

  • Kan lukkes: Dette grensesnittet brukes av klasser som håndterer ressurser.
  • Spylbar: Dette grensesnittet brukes til å skylle data til destinasjonen.
  • Kan legges til: Dette grensesnittet brukes til å legge til data til en eksisterende strøm.
  • Autolukkbar: Dette grensesnittet tillater automatisk lukking av ressurser.

Konstruktører i PipedWriter-klassen

Denne klassen består av to konstruktører ved hjelp av hvilke vi kan lage objekter av denne klassen på forskjellige måter. Følgende er konstruktørene som er tilgjengelige i denne klassen:

1. PipedWriter(): Denne konstruktøren brukes til å lage en PipedWriter som ikke er koblet til noe ennå.

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  ();      }      }   }   

Produksjon
Hello from PipedWriter! 


2. PipedWriter(PipedReader inStream): Denne konstruktøren vi brukte til å lage en PipedWriter og koble den til 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  ();      }      }   }   

Produksjon
Hello PipedWriter 


Java PipedWriter-metoder

Bildet nedenfor viser metodene til PipedWriter-klassen.

io.PipedWriter Class i Java


Nå skal vi diskutere hver metode en etter en i detalj:

1. skriv(int char): Denne metoden brukes til å skrive et enkelt tegn til et rør.

Syntaks:

offentlig void skrive(int char)

  • Parameter: Denne metoden tar en parameter som representerer tegnet som skal skrives.
  • Unntak: Denne metoden returnerer IOException hvis det er et problem med I/O-operasjonen.


2. skriv(char[] carray int offset int maxlen): Denne metoden brukes til å skrive tegn fra en matrise til røret.

Syntaks:

public void write(char[] carray int offset int maxlen)

  • Parameter: Denne metoden inkluderer tre parametere som er oppført nedenfor:
    • bære: Det er tegnarrayen som inneholder data
    • offset: Det er posisjonen i matrisen hvor du skal begynne å skrive form
    • maxlen: Det er maksimalt antall tegn å skrive.
  • Unntak: Denne metoden returnerer IOException hvis det er et problem med I/O-operasjonen.


3. koble til (PipedReader-destinasjon): Denne metoden brukes til å koble PipedWriter til en PipedReader.

Syntaks:

offentlig void-tilkobling (PipedReader-destinasjon)

  • Parameter: Denne metoden tar én parameterdestinasjon, det er PipedReader som PipedWriter vil koble til for dataoverføring.
  • Unntak: Denne metoden kaster IOException hvis det oppstår en feil under tilkobling.


4. flush(): Denne metoden brukes til å skylle data i røret.

Syntaks:

public void flush()

  • Parameter: Denne metoden tar ingen parameter.
  • Unntak: Denne metoden kaster IOException hvis det oppstår en feil under tømming av dataene.


5. lukk(): Denne metoden brukes til å lukke PipedWriter.

Synatx:

public void close()

  • Parameter: Denne metoden tar ingen parameter.
  • Unntak: Denne metoden kaster IOException hvis det er et problem med å lukke skriveren.


Nå skal vi diskutere hvordan vi kan bruke PipedWriter-klassen til å skrive data og lese dem gjennom en tilkoblet 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  ();         }      }   

Produksjon
Output from the pipe: J A V A 



Java-program som illustrerer hvordan PipedWriter-klassemetoder fungerer

Nå skal vi skrive noen tegn tømme utdataene 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  ();      }      }   }   

Produksjon
Output after flush(): G E E K S Closing the Writer stream  
Lag quiz