Clase Java PipedWriter

Clase Java PipedWriter

El Clase PipedWriter en Java permite que dos subprocesos se comuniquen entre sí pasando datos a través de una tubería. Esta clase es útil cuando queremos que una parte del programa envíe datos a otra parte sin almacenarlos en la memoria.

Características de la clase PipedWriter:

  • Permite escribir datos en una tubería.
  • Utiliza un búfer para almacenar datos temporalmente antes de enviarlos al PipedReader.
  • Funciona con PipedReader para garantizar la transferencia segura de datos entre subprocesos.
  • Si la tubería se rompe arroja un error.

Declaración de PipedWriter en Java

La Declaración de la clase PipedWriter es:

la clase pública PipedWriter extiende Writer

  • Cerrable: Esta interfaz es utilizada por clases que manejan recursos.
  • Desechable: Esta interfaz se utiliza para enviar datos a su destino.
  • Anexo: Esta interfaz se utiliza para agregar datos a una secuencia existente.
  • Cierre automático: Esta interfaz permite el cierre automático de recursos.

Constructores en la clase PipedWriter

Esta clase consta de dos constructores con la ayuda de los cuales podemos crear objetos de esta clase de diferentes maneras. Los siguientes son los constructores disponibles en esta clase:

1. PipedWriter(): Este constructor se utiliza para crear un PipedWriter que aún no está conectado a nada.

Sintaxis:

Escritor canalizado()

Ejemplo:

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

Producción
Hello from PipedWriter! 


2. PipedWriter (PipedReader en corriente): Este constructor que utilizamos crea un PipedWriter y lo conecta a un PipedReader.

Sintaxis:

PipedWriter(PipedReader snk)

Ejemplo:

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

Producción
Hello PipedWriter 


Métodos Java PipedWriter

La siguiente imagen muestra los métodos de la clase PipedWriter.

Clase io.PipedWriter en Java


Ahora vamos a discutir cada método uno por uno en detalle:

1. escribir (int carácter): Este método se utiliza para escribir un solo carácter en una tubería.

Sintaxis:

escritura pública vacía (int char)

  • Parámetro: Este método toma un parámetro que es char que representa el carácter que se va a escribir.
  • Excepción: Este método devuelve IOException si hay un problema con la operación de E/S.


2. escribir(char[] carray int offset int maxlen): Este método se utiliza para escribir caracteres de una matriz en la tubería.

Sintaxis:

escritura vacía pública (char[] carray int offset int maxlen)

  • Parámetro: Este método incluye tres parámetros que se enumeran a continuación:
    • carray: Es la matriz de caracteres que contiene datos.
    • compensar: Es la posición en la matriz donde comenzar a escribir el formulario.
    • maxlen: Es el número máximo de caracteres a escribir.
  • Excepción: Este método devuelve IOException si hay un problema con la operación de E/S.


3. conectar (destino de PipedReader): Este método se utiliza para conectar PipedWriter a PipedReader.

Sintaxis:

conexión pública vacía (destino de PipedReader)

  • Parámetro: Este método toma un destino de parámetro: es el PipedReader al que se conectará PipedWriter para la transferencia de datos.
  • Excepción: Este método genera IOException si se produce un error durante la conexión.


4. enjuague(): Este método se utiliza para vaciar datos en la tubería.

Sintaxis:

descarga de vacío público ()

  • Parámetro: Este método no toma ningún parámetro.
  • Excepción: Este método genera IOException si se produce un error al vaciar los datos.


5. cerrar(): Este método se utiliza para cerrar PipedWriter.

Sinatx:

cierre de vacío público()

  • Parámetro: Este método no toma ningún parámetro.
  • Excepción: Este método genera IOException si hay un problema al cerrar el escritor.


Ahora discutiremos cómo podemos usar la clase PipedWriter para escribir datos y leerlos a través de un PipedReader conectado.

Ejemplo:

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

Producción
Output from the pipe: J A V A 



Programa Java que ilustra el funcionamiento de los métodos de clase PipedWriter

Ahora escribiremos algunos caracteres, limpiaremos la salida y cerraremos el escritor.

Ejemplo:

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

Producción
Output after flush(): G E E K S Closing the Writer stream  
Crear cuestionario