Java PipedWriter klasse

Java PipedWriter klasse

De PipedWriter klasse i Java tillader to tråde at kommunikere med hinanden ved at føre data gennem et rør. Denne klasse er nyttig, når vi ønsker, at en del af programmet skal sende data til en anden del uden at gemme dem i hukommelsen.

Funktioner i PipedWriter-klassen:

  • Det gør det muligt at skrive data ind i et rør.
  • Den bruger en buffer til midlertidigt at gemme data, før den sendes til PipedReader.
  • Det fungerer med PipedReader for at sikre sikker dataoverførsel mellem tråde.
  • Hvis røret går i stykker, giver det en fejl.

Erklæring om PipedWriter i Java

Erklæringen fra PipedWriter-klassen er:

offentlig klasse PipedWriter udvider Writer

Alle implementerede grænseflader:

  • Kan lukkes: Denne grænseflade bruges af klasser, der håndterer ressourcer.
  • Skylbar: Denne grænseflade bruges til at skylle data til deres destination.
  • Kan tilføjes: Denne grænseflade bruges til at tilføje data til en eksisterende strøm.
  • Autolukbar: Denne grænseflade tillader automatisk lukning af ressourcer.

Konstruktører i PipedWriter-klassen

Denne klasse består af to konstruktører, ved hjælp af hvilke vi kan skabe objekter af denne klasse på forskellige måder. Følgende er konstruktørerne tilgængelige i denne klasse:

1. PipedWriter(): Denne konstruktør bruges til at oprette en PipedWriter, som ikke er forbundet til noget endnu.

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

Produktion
Hello from PipedWriter! 


2. PipedWriter(PipedReader inStream): Denne konstruktør, vi brugte til at oprette en PipedWriter og forbinder den med 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  ();      }      }   }   

Produktion
Hello PipedWriter 


Java PipedWriter-metoder

Billedet nedenfor viser metoderne til PipedWriter-klassen.

io.PipedWriter klasse i Java


Nu skal vi diskutere hver metode en efter en i detaljer:

1. skriv(int char): Denne metode bruges til at skrive et enkelt tegn til et rør.

Syntaks:

public void write(int char)

  • Parameter: Denne metode tager en parameter, der repræsenterer det tegn, der skal skrives.
  • Undtagelse: Denne metode returnerer IOException, hvis der er et problem med I/O-handlingen.


2. skriv(char[] carray int offset int maxlen): Denne metode bruges til at skrive tegn fra et array til røret.

Syntaks:

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

  • Parameter: Denne metode omfatter tre parametre, som er angivet nedenfor:
    • bære: Det er tegnarrayet, der indeholder data
    • offset: Det er den position i rækken, hvor man skal begynde at skrive form
    • maxlen: Det er det maksimale antal tegn at skrive.
  • Undtagelse: Denne metode returnerer IOException, hvis der er et problem med I/O-handlingen.


3. tilslut (PipedReader destination): Denne metode bruges til at forbinde PipedWriter til en PipedReader.

Syntaks:

offentlig void forbindelse (PipedReader destination)

  • Parameter: Denne metode tager én parameterdestination, det er PipedReader, som PipedWriter vil forbinde til for dataoverførsel.
  • Undtagelse: Denne metode kaster IOException, hvis der opstår en fejl under tilslutning.


4. skyl(): Denne metode bruges til at skylle data i røret.

Syntaks:

public void flush()

  • Parameter: Denne metode tager ikke nogen parameter.
  • Undtagelse: Denne metode kaster IOException, hvis der opstår en fejl under tømning af data.


5. luk(): Denne metode bruges til at lukke PipedWriter.

Synatx:

public void close()

  • Parameter: Denne metode tager ikke nogen parameter.
  • Undtagelse: Denne metode kaster IOException, hvis der er et problem med at lukke forfatteren.


Nu vil vi diskutere, hvordan vi kan bruge PipedWriter-klassen til at skrive data og læse dem gennem en tilsluttet 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  ();         }      }   

Produktion
Output from the pipe: J A V A 



Java-program, der illustrerer, hvordan PipedWriter-klassemetoder fungerer

Nu vil vi skrive nogle tegn skylle outputtet 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  ();      }      }   }   

Produktion
Output after flush(): G E E K S Closing the Writer stream  
Opret Quiz