Java PipedReader-klasse

Java PipedReader-klasse

De PipedReader-klasse in Java maakt deel uit van de java.io pakket en het wordt gebruikt om karaktergegevens uit een pipe te lezen. Deze klasse maakt communicatie tussen threads mogelijk waarbij de ene thread gegevens schrijft met behulp van een PipedWriter en een andere deze leest met behulp van PipedReader.

Kenmerken van PipedReader-klasse:

  • Hiermee kunnen gegevens via een pijp worden gelezen.
  • Het gebruikt een buffer om gegevens op te slaan die zijn ontvangen van de PipedWriter.
  • Het werkt met PipedWriter om ervoor te zorgen dat de gegevens veilig tussen threads worden overgedragen.
  • Als de leiding breekt, geeft dit een foutmelding.

Wat is een pijp op Java?

In Java wordt een pipe gebruikt om twee threads met elkaar te verbinden. Eén thread wordt gebruikt om gegevens door de pijp te sturen en de andere thread leest de gegevens. Als de thread die de gegevens verzendt, stopt of crasht, wordt de pijp als kapot beschouwd.

Verklaring van PipedReader-klasse

De declaratie van de klasse PipedReader is:

openbare klasse PipedReader breidt Reader uit

Alle geïmplementeerde interfaces:

  • Afsluitbaar: Deze interface wordt gebruikt om de stream te sluiten en bronnen vrij te geven wanneer deze niet langer nodig zijn.
  • Automatisch Sluitbaar: Deze interface maakt automatisch resourcebeheer mogelijk in try-with-resources-instructies.
  • Leesbaar: Met deze interface kunnen gegevens uit de stream worden gelezen.

Constructeurs van PipedReader

Deze klasse bestaat uit vier constructors met behulp waarvan we op verschillende manieren een object van deze klasse kunnen maken. De volgende constructors zijn beschikbaar in deze klasse:

1. PipedReader(): Deze constructor maakt een PipedReader die nog niet met een schrijver is verbonden.

Syntaxis:

openbare PipedReader()


2. PipedReader(int pipeSize): Deze constructor maakt een PipedREAder met een opgegeven pijpgrootte.

Syntaxis:

openbare PipedReader (int pSize)


3. PipedReader(PipedWriter src): Deze constructor maakt een PipedReader die is verbonden met de PipedWriterStream src.

openbare PipedReader (PipedWriter src)


4. PipedReader (PipedWriter src int pipeSize): Deze constructor maakt een aangesloten PipedReader met een opgegeven grootte en gekoppeld aan de opgegeven PipedWriter.

Syntaxis:

public PipedReader(PipedWriter src int pSize)


Java PipedReaderMethoden

De onderstaande afbeelding demonstreert de methoden van de PipedReader-klasse.

io.PipedReader-klasse in Java


Nu gaan we elke methode één voor één in detail bespreken:

1. lees(): Deze methode wordt gebruikt om het volgende teken uit de PipedReader te halen. Het blokkeert totdat er gegevens zijn om te lezen of er een fout optreedt.

Syntaxis:

public int read() gooit IOException

  • Parameter: Deze methode gebruikt geen enkele parameter.
  • Retourtype: Deze methode retourneert het volgende teken als een geheel getal of retourneert -1 als het einde van de stream is bereikt.

Voorbeeld:

Java
   // Demonstrating the working    // of read() method   import     java.io.*  ;   public     class   GeeKs     {          public     static     void     main  (  String  []     args  )     throws     IOException     {          PipedReader     r     =     new     PipedReader  ();      PipedWriter     w     =     new     PipedWriter  ();      // Connect the reader and writer      r  .  connect  (  w  );      // Write data to the PipedWriter      w  .  write  (  71  );         System  .  out  .  println  (  'Read: '     +     (  char  )     r  .  read  ());         w  .  write  (  69  );         System  .  out  .  println  (  'Read: '     +     (  char  )     r  .  read  ());         w  .  write  (  75  );         System  .  out  .  println  (  'Read: '     +     (  char  )     r  .  read  ());         }   }   

Uitvoer
Read: G Read: E Read: K  


2. lezen(char[] carray int offset int maxlen): Deze methode wordt gebruikt om maximaal maxlen-tekens van PipedReader Stream naar de tekenarray te lezen. De methode blokkeert als het einde van de stream wordt bereikt of als er een uitzondering wordt gegenereerd.

Syntaxis:

public int read(char[] carray int offset int maxlen) gooit IOException

  • Parameter: Deze methode omvat drie parameters die hieronder worden vermeld:
    • wagen: Het is de buffer waarin de gegevens worden gelezen.
    • compensatie: Het is de startpositie in de array
    • maxlen: Het maximale aantal tekens dat in de array kan worden gelezen.
  • Retourtype: Deze methode retourneert maxlen bytes van de gegevens als een geheel getal of retourneert -1 als het einde van de stroom is bereikt

Voorbeeld:

Java
   // Demonstrating the working    // of read(char[] carray int offset int maxlen)    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  );      // Write data to PipedWriter      w  .  write  (  71  );     // G      w  .  write  (  69  );     // E      w  .  write  (  75  );     // K      w  .  write  (  83  );     // S      // Read data into an array      char  []     b     =     new     char  [  5  ]  ;      r  .  read  (  b       0       5  );          System  .  out  .  print  (  'Read characters: '  );      for     (  char     c     :     b  )     {      System  .  out  .  print  (  c  );         }      }   }   

Uitvoer
Read characters: GEKS 


3. sluiten(): Deze methode wordt gebruikt om de PipedReader te sluiten.

Syntaxis:

public void close() genereert IOException

  • Parameter: Deze methode gebruikt geen enkele parameter
  • Retourtype: Deze methode levert niets op

Voorbeeld:

Java
   // Demonstrating the working   // of close() method   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  );      w  .  write  (  71  );         // Close the reader      r  .  close  ();      System  .  out  .  println  (  'Stream closed.'  );      }   }   

Uitvoer
Stream closed.  


4. klaar(): Deze methode wordt gebruikt om te controleren of de stream klaar is om gelezen te worden.

Syntaxis:

public boolean ready() gooit IOException

  • Parameter: Deze methode gebruikt geen enkele parameter
  • Retourtype: Deze methode retourneert true als de stream gereed is om te worden gelezen, anders retourneert deze false.

Voorbeeld:

Java
   // Demonstrating the working   // of ready() method   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  );      w  .  write  (  71  );         // Check if the stream is ready to be read      System  .  out  .  println  (  'Stream is ready to be read: '     +     r  .  ready  ());      }   }   

Uitvoer
Stream is ready to be read: true  


5. sluiten(): Deze methode wordt gebruikt om de PipedReader-streams te sluiten.

Syntaxis:

openbare leegte close()

  • Parameter: Deze methode gebruikt geen enkele parameter.
  • Retourtype: Deze methode levert niets op.

Voorbeeld:

Java
   // Demonstrating the working   // of close() method   import     java.io.*  ;   public     class   Geeks  {          public     static     void     main  (  String  []     args  )     {          try     {      // Create a PipedReader and PipedWriter      PipedReader     r     =     new     PipedReader  ();      PipedWriter     w     =     new     PipedWriter  ();      // Connect the PipedReader to the PipedWriter      r  .  connect  (  w  );      // Write a character to the PipedWriter      w  .  write  (  'A'  );          // Read and print the character from the PipedReader      System  .  out  .  println  (  'Read: '     +     (  char  )     r  .  read  ());     // Output: A      // Close the PipedReader stream      r  .  close  ();      System  .  out  .  println  (  'Stream closed.'  );      }     catch     (  IOException     e  )     {      e  .  printStackTrace  ();      }      }   }   

Uitvoer
Read: A Stream closed.  
Quiz maken