logo

Java PipedWriter osztály

A PipedWriter osztály Java nyelven lehetővé teszi, hogy két szál kommunikáljon egymással azáltal, hogy adatokat továbbít egy csövön keresztül. Ez az osztály akkor hasznos, ha azt szeretnénk, hogy a program egy része adatokat küldjön egy másik résznek anélkül, hogy azokat a memóriában tárolná.

A PipedWriter osztály jellemzői:

  • Lehetővé teszi adatok csőbe írását.
  • Puffert használ az adatok ideiglenes tárolására, mielőtt elküldené azokat a PipedReadernek.
  • Együttműködik a PipedReaderrel, hogy biztonságos adatátvitelt biztosítson a szálak között.
  • Ha a cső eltörik, hibát jelez.

A PipedWriter nyilatkozata Java nyelven

A PipedWriter osztály nyilatkozata a következő:



nyilvános osztály PipedWriter kiterjeszti Writer-t

Minden megvalósított interfész:

  • Zárható: Ezt a felületet az erőforrásokat kezelő osztályok használják.
  • Öblíthető: Ez az interfész arra szolgál, hogy az adatokat a rendeltetési helyre ürítse.
  • Hozzáfűzhető: Ez az interfész adatok hozzáfűzésére szolgál egy meglévő adatfolyamhoz.
  • Automatikus bezárás: Ez az interfész lehetővé teszi az erőforrások automatikus bezárását.

Konstruktorok a PipedWriter osztályban

Ez az osztály két konstruktorból áll, amelyek segítségével többféleképpen hozhatunk létre objektumokat ebből az osztályból. A következő konstruktorok állnak rendelkezésre ebben az osztályban:

1. PipedWriter(): Ezzel a konstruktorral olyan PipedWritert hozhatunk létre, amely még nem kapcsolódik semmihez.

Szintaxis:

PipedWriter()

Példa:

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

Kimenet
Hello from PipedWriter!


2. PipedWriter (PipedReader inStream): Ez a konstruktor, amellyel korábban létrehoztunk egy PipedWriter-t, és összekapcsolja egy PipedReaderrel.

Szintaxis:

PipedWriter (PipedReader snk)

Példa:

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

Kimenet
Hello PipedWriter


Java PipedWriter módszerek

Az alábbi kép a PipedWriter osztály metódusait mutatja be.

io.PipedWriter osztály Java nyelven' title=


Most az egyes módszereket részletesen tárgyaljuk:

1. írás (int char): Ezt a módszert egyetlen karakter csőbe írására használják.

Szintaxis:

public void írás (int char)

  • Paraméter: Ez a módszer egy olyan paramétert vesz fel, amely az írandó karaktert reprezentálja.
  • Kivétel: Ez a módszer az IOException értéket adja vissza, ha probléma van az I/O művelettel.


2. write(char[] carray int offset int maxlen): Ezzel a módszerrel karaktereket írhatunk egy tömbből a csőbe.

Szintaxis:

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

  • Paraméter: Ez a módszer három paramétert tartalmaz, amelyeket az alábbiakban felsorolunk:
    • carray: Ez a karaktertömb, amely adatokat tartalmaz
    • eltolás: Ez az a pozíció a tömbben, ahol el kell kezdeni az űrlap írását
    • maxlen: Ez az írható karakterek maximális száma.
  • Kivétel: Ez a módszer az IOException értéket adja vissza, ha probléma van az I/O művelettel.


3. csatlakozás (PipedReader cél): Ez a módszer a PipedWriter és a PipedReader összekapcsolására szolgál.

Szintaxis:

public void connect (PipedReader cél)

  • Paraméter: Ez a metódus egy paramétert vesz igénybe, ez a PipedReader, amelyhez a PipedWriter csatlakozik az adatátvitelhez.
  • Kivétel: Ez a módszer IOException-t dob, ha hiba történik a csatlakozás során.


4. flush(): Ezt a módszert a csőben lévő adatok öblítésére használják.

Szintaxis:

public void flush()

  • Paraméter: Ez a módszer nem vesz fel semmilyen paramétert.
  • Kivétel: Ez a módszer IOException-t dob, ha hiba történik az adatok kiürítése közben.


5. bezár(): Ez a módszer a PipedWriter bezárására szolgál.

Synatx:

kijelölés rendezés java-ban

public void bezár()

  • Paraméter: Ez a módszer nem vesz fel semmilyen paramétert.
  • Kivétel: Ez a metódus IOExceptiont dob, ha probléma van az író bezárásával.


Most megvitatjuk, hogyan használhatjuk a PipedWriter osztályt adatok írására és olvasására egy csatlakoztatott PipedReaderen keresztül.

Példa:

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

Kimenet
Output from the pipe: J A V A



Java program, amely szemlélteti a PipedWriter osztály módszereinek működését

Most néhány karaktert írunk, majd kiürítjük a kimenetet, és bezárjuk az írót.

Példa:

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

Kimenet
Output after flush(): G E E K S Closing the Writer stream 
Kvíz létrehozása