logo

Classe Java PipedWriter

El Classe PipedWriter en Java permet que dos fils es comuniquin entre ells passant dades per una canonada. Aquesta classe és útil quan volem que una part del programa enviï dades a una altra part sense emmagatzemar-les a la memòria.

Característiques de la classe PipedWriter:

  • Permet escriure dades en una canonada.
  • Utilitza una memòria intermèdia per emmagatzemar dades temporalment abans d'enviar-les al PipedReader.
  • Funciona amb PipedReader per garantir una transferència segura de dades entre fils.
  • Si la canonada es trenca, genera un error.

Declaració de PipedWriter a Java

La declaració de la classe PipedWriter és:



La classe pública PipedWriter amplia Writer

Totes les interfícies implementades:

derivada parcial en làtex
  • Tancable: Aquesta interfície la fan servir les classes que gestionen recursos.
  • Fluixable: Aquesta interfície s'utilitza per enviar les dades a la seva destinació.
  • Apèndix: Aquesta interfície s'utilitza per afegir dades a un flux existent.
  • Tancament automàtic: Aquesta interfície permet el tancament automàtic dels recursos.

Constructors a la classe PipedWriter

Aquesta classe consta de dos constructors amb l'ajuda dels quals podem crear objectes d'aquesta classe de diferents maneres. Els constructors disponibles en aquesta classe són els següents:

1. PipedWriter(): Aquest constructor s'utilitza per crear un PipedWriter que encara no està connectat a res.

Sintaxi:

PipedWriter()

Exemple:

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

Sortida
Hello from PipedWriter!


2. PipedWriter (PipedReader inStream): Aquest constructor que ens solia crear un PipedWriter i el connecta a un PipedReader.

punter al c

Sintaxi:

PipedWriter (snk de PipedReader)

Exemple:

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

Sortida
Hello PipedWriter


Mètodes Java PipedWriter

La imatge següent mostra els mètodes de la classe PipedWriter.

Classe io.PipedWriter a Java' title=


Ara parlarem de cada mètode un per un en detall:

1. escriure (int char): Aquest mètode s'utilitza per escriure un sol caràcter a una canonada.

Sintaxi:

public void write (int char)

cadena a nombre enter
  • Paràmetre: Aquest mètode pren un paràmetre que representa el caràcter que s'ha d'escriure.
  • Excepció: Aquest mètode retorna IOException si hi ha un problema amb l'operació d'E/S.


2. write(char[] carray int offset int maxlen): Aquest mètode s'utilitza per escriure caràcters d'una matriu a la canonada.

Sintaxi:

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

  • Paràmetre: Aquest mètode inclou tres paràmetres que s'enumeren a continuació:
    • carray: És la matriu de caràcters que conté dades
    • compensació: És la posició de la matriu on començar a escriure el formulari
    • maxlen: És el nombre màxim de caràcters per escriure.
  • Excepció: Aquest mètode retorna IOException si hi ha un problema amb l'operació d'E/S.


3. connectar (destinació de PipedReader): Aquest mètode s'utilitza per connectar el PipedWriter a un PipedReader.

Sintaxi:

connexió public void (destinació de PipedReader)

  • Paràmetre: Aquest mètode pren un paràmetre de destinació, és el PipedReader al qual es connectarà el PipedWriter per a la transferència de dades.
  • Excepció: Aquest mètode llança IOException si es produeix un error durant la connexió.


4. escàs(): Aquest mètode s'utilitza per netejar dades a la canonada.

Sintaxi:

int a cadena c++

buit public ()

closca de tornada
  • Paràmetre: Aquest mètode no pren cap paràmetre.
  • Excepció: Aquest mètode llança IOException si es produeix un error mentre es neteja les dades.


5. tancar(): Aquest mètode s'utilitza per tancar el PipedWriter.

Sinatx:

buit públic tancar()

  • Paràmetre: Aquest mètode no pren cap paràmetre.
  • Excepció: Aquest mètode llança IOException si hi ha un problema amb el tancament de l'escriptor.


Ara parlarem de com podem utilitzar la classe PipedWriter per escriure dades i llegir-les mitjançant un PipedReader connectat.

Exemple:

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

Sortida
Output from the pipe: J A V A



Programa Java que il·lustra el funcionament dels mètodes de classe PipedWriter

Ara escriurem alguns caràcters que esborraran la sortida i tanquem l'escriptor.

Exemple:

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

Sortida
Output after flush(): G E E K S Closing the Writer stream 
Crea un qüestionari