Klasa Java PipedReader
The Klasa PipedReader w Javie jest częścią Java.io pakiet i służy do odczytywania danych znakowych z potoku. Ta klasa umożliwia komunikację między wątkami, w której jeden wątek zapisuje dane przy użyciu PipedWriter, a inny je odczytuje Czytnik Piped.
Funkcje klasy PipedReader:
- Umożliwia odczyt danych poprzez potok.
- Używa bufora do przechowywania danych otrzymanych z PipedWriter.
- Współpracuje z PipedWriter, aby mieć pewność, że dane są bezpiecznie przesyłane między wątkami.
- Jeśli rura pęknie, zgłasza błąd.
Co to jest potok w Javie?
W Javie potok służy do łączenia dwóch wątków. Jeden wątek służy do przesyłania danych potokiem, a drugi wątek je odczytuje. Jeśli wątek wysyłający dane zatrzyma się lub ulegnie awarii, potok uważa się za uszkodzony.
Deklaracja klasy PipedReader
Deklaracja klasy PipedReader to:
klasa publiczna PipedReader rozszerza Reader
Wszystkie zaimplementowane interfejsy:
- Zamykane: Ten interfejs służy do zamykania strumienia i zwalniania zasobów, gdy nie są już potrzebne.
- Automatyczne zamykanie: Interfejs ten umożliwia automatyczne zarządzanie zasobami w instrukcjach try-with-resources.
- Czytelny: Interfejs ten umożliwia odczyt danych ze strumienia.
Konstruktorzy PipedReader
Klasa ta składa się z czterech konstruktorów, za pomocą których możemy na różne sposoby tworzyć obiekty tej klasy. Poniżej znajdują się konstruktory dostępne w tej klasie:
1. PipedReader(): Ten konstruktor tworzy PipedReader, który nie jest jeszcze połączony z żadnym modułem zapisującym.
Składnia:
publiczny PipedReader()
2. PipedReader (int rozmiar rury): Ten konstruktor tworzy aPipedREader z określonym rozmiarem potoku.
Składnia:
publiczny PipedReader (int pSize)
3. PipedReader(PipedWriter src): Ten konstruktor tworzy PipedReader, który jest podłączony do PipedWriterStream src.
publiczny PipedReader(PipedWriter src)
4. PipedReader(PipedWriter src int rozmiar rury): Ten konstruktor tworzy połączony PipedReader o określonym rozmiarze i połączony z danym PipedWriter.
Składnia:
public PipedReader(PipedWriter src int pSize)
Metody Java PipedReader
Poniższy obrazek przedstawia metody klasy PipedReader.
Teraz omówimy szczegółowo każdą metodę:
1. przeczytaj(): Ta metoda służy do pobrania następnego znaku z PipedReader. Blokuje do momentu pojawienia się danych do odczytania lub wystąpienia błędu.
Składnia:
public int read() zgłasza wyjątek IOException
- Parametr: Ta metoda nie przyjmuje żadnego parametru.
- Typ zwrotu: Ta metoda zwraca następny znak jako liczbę całkowitą lub zwraca -1, jeśli osiągnięty zostanie koniec strumienia.
Przykład:
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 ()); } }
Wyjście
Read: G Read: E Read: K
2. read(char[] carray int offset int maxlen): Ta metoda służy do odczytywania maksymalnie znaków ze strumienia PipedReader do tablicy znaków. Metoda blokuje się, jeśli osiągnięty zostanie koniec strumienia lub zostanie zgłoszony wyjątek.
Składnia:
public int read(char[] carray int offset int maxlen) zgłasza wyjątek IOException
- Parametr: Metoda ta obejmuje trzy parametry wymienione poniżej:
- nieść: Jest to bufor, do którego będą wczytywane dane.
- zrównoważyć: Jest to pozycja początkowa w tablicy
- Maxlen: Maksymalna liczba znaków, które można wczytać do tablicy.
- Typ zwrotu: Ta metoda zwraca maksymalną długość bajtów danych jako wartość całkowitą lub zwraca -1 w przypadku osiągnięcia końca strumienia
Przykład:
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 ); } } }
Wyjście
Read characters: GEKS
3. zamknij(): Ta metoda służy do zamykania PipedReader.
Składnia:
public void close() zgłasza wyjątek IOException
- Parametr: Ta metoda nie przyjmuje żadnego parametru
- Typ zwrotu: Ta metoda nic nie zwraca
Przykład:
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.' ); } }
Wyjście
Stream closed.
4. gotowy(): Metodą tą sprawdzamy czy strumień jest gotowy do odczytu.
Składnia:
publiczna wartość logiczna Ready() zgłasza wyjątek IOException
- Parametr: Ta metoda nie przyjmuje żadnego parametru
- Typ zwrotu: Ta metoda zwraca wartość true, jeśli strumień jest gotowy do odczytu, w przeciwnym razie zwraca wartość false.
Przykład:
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 ()); } }
Wyjście
Stream is ready to be read: true
5. zamknij(): Ta metoda służy do zamykania strumieni PipedReader.
Składnia:
publiczna pustka zamknij()
- Parametr: Ta metoda nie przyjmuje żadnego parametru.
- Typ zwrotu: Ta metoda nic nie zwraca.
Przykład:
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 (); } } }
Wyjście
Read: A Stream closed.Utwórz quiz