De PipedWriter-klassen i Java lar to tråder kommunisere med hverandre ved å sende data gjennom et rør. Denne klassen er nyttig når vi vil at en del av programmet skal sende data til en annen del uten å lagre det i minnet.
Funksjoner i PipedWriter-klassen:
- Det lar deg skrive data inn i et rør.
- Den bruker en buffer for å lagre data midlertidig før den sendes til PipedReader.
- Det fungerer med PipedReader for å sikre sikker dataoverføring mellom tråder.
- Hvis røret ryker gir det en feil.
Erklæring fra PipedWriter i Java
Erklæringen fra PipedWriter-klassen er:
offentlig klasse PipedWriter utvider Writer
Alle implementerte grensesnitt:
- Kan lukkes: Dette grensesnittet brukes av klasser som håndterer ressurser.
- Spylbar: Dette grensesnittet brukes til å skylle data til destinasjonen.
- Kan legges til: Dette grensesnittet brukes til å legge til data til en eksisterende strøm.
- Autolukkbar: Dette grensesnittet tillater automatisk lukking av ressurser.
Konstruktører i PipedWriter-klassen
Denne klassen består av to konstruktører ved hjelp av hvilke vi kan lage objekter av denne klassen på forskjellige måter. Følgende er konstruktørene som er tilgjengelige i denne klassen:
1. PipedWriter(): Denne konstruktøren brukes til å lage en PipedWriter som ikke er koblet til noe ennå.
Syntaks:
PipedWriter()
rev eller ulv
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(); } } }
Produksjon
Hello from PipedWriter!
2. PipedWriter(PipedReader inStream): Denne konstruktøren vi brukte til å lage en PipedWriter og koble den til en PipedReader.
java-verdien av enum
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(); } } }
Produksjon
Hello PipedWriter
Java PipedWriter-metoder
Bildet nedenfor viser metodene til PipedWriter-klassen.

Nå skal vi diskutere hver metode en etter en i detalj:
1. skriv(int char): Denne metoden brukes til å skrive et enkelt tegn til et rør.
Syntaks:
offentlig void skrive(int char)
- Parameter: Denne metoden tar en parameter som representerer tegnet som skal skrives.
- Unntak: Denne metoden returnerer IOException hvis det er et problem med I/O-operasjonen.
2. skriv(char[] carray int offset int maxlen): Denne metoden brukes til å skrive tegn fra en matrise til røret.
Syntaks:
public void write(char[] carray int offset int maxlen)
- Parameter: Denne metoden inkluderer tre parametere som er oppført nedenfor:
- bære: Det er tegnarrayen som inneholder data
- offset: Det er posisjonen i matrisen hvor du skal begynne å skrive form
- maxlen: Det er maksimalt antall tegn å skrive.
- Unntak: Denne metoden returnerer IOException hvis det er et problem med I/O-operasjonen.
3. koble til (PipedReader-destinasjon): Denne metoden brukes til å koble PipedWriter til en PipedReader.
Syntaks:
bash annet hvis
offentlig void-tilkobling (PipedReader-destinasjon)
- Parameter: Denne metoden tar én parameterdestinasjon, det er PipedReader som PipedWriter vil koble til for dataoverføring.
- Unntak: Denne metoden kaster IOException hvis det oppstår en feil under tilkobling.
4. flush(): Denne metoden brukes til å skylle data i røret.
Syntaks:
public void flush()
- Parameter: Denne metoden tar ingen parameter.
- Unntak: Denne metoden kaster IOException hvis det oppstår en feil under tømming av dataene.
arveprogram i python
5. lukk(): Denne metoden brukes til å lukke PipedWriter.
Synatx:
public void close()
- Parameter: Denne metoden tar ingen parameter.
- Unntak: Denne metoden kaster IOException hvis det er et problem med å lukke skriveren.
Nå skal vi diskutere hvordan vi kan bruke PipedWriter-klassen til å skrive data og lese dem gjennom en tilkoblet 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(); } }
Produksjon
Output from the pipe: J A V A
Java-program som illustrerer hvordan PipedWriter-klassemetoder fungerer
Nå skal vi skrive noen tegn tømme utdataene 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(); } } }
Produksjon
Output after flush(): G E E K S Closing the Writer streamLag quiz