Classe Java PipedReader
O Classe PipedReader em Java faz parte do java.io pacote e é usado para ler dados de caracteres de um canal. Esta classe permite a comunicação entre threads onde um thread grava dados usando um PipedWriter e outro os lê usando PipedReader.
Recursos da classe PipedReader:
- Permite a leitura de dados através de um pipe.
- Ele usa um buffer para armazenar dados recebidos do PipedWriter.
- Funciona com PipedWriter para garantir que os dados sejam transferidos com segurança entre threads.
- Se o tubo quebrar, ocorrerá um erro.
O que é um tubo em Java?
Em Java, um pipe é usado para vincular dois threads. Um thread é usado para enviar dados através do canal e o outro thread lê os dados. Se o thread que está enviando os dados parar ou travar, o canal será considerado quebrado.
Declaração da classe PipedReader
A declaração da classe PipedReader é:
classe pública PipedReader estende Reader
Todas as interfaces implementadas:
- Fechável: Essa interface é usada para fechar o fluxo e liberar recursos quando não forem mais necessários.
- Fechamento automático: Esta interface permite o gerenciamento automático de recursos em instruções try-with-resources.
- Legível: Esta interface permite que os dados sejam lidos do fluxo.
Construtores de PipedReader
Esta classe consiste em quatro construtores com a ajuda dos quais podemos criar objetos desta classe de diferentes maneiras. A seguir estão os construtores disponíveis nesta classe:
1. PipedReader(): Este construtor cria um PipedReader que ainda não está conectado a nenhum gravador.
Sintaxe:
PipedReader público()
2. PipedReader (int pipeSize): Este construtor cria umPipedREader com um tamanho de tubo especificado.
Sintaxe:
PipedReader público (int pSize)
3. PipedReader(PipedWriter src): Este construtor cria um PipedReader que está conectado ao src PipedWriterStream.
PipedReader público (PipedWriter src)
4. PipedReader (PipedWriter src int pipeSize): Este construtor cria um PipedReader conectado com um tamanho especificado e vinculado ao PipedWriter fornecido.
Sintaxe:
PipedReader público (PipedWriter src int pSize)
Métodos Java PipedReader
A imagem abaixo demonstra os métodos da classe PipedReader.
Agora vamos discutir cada método, um por um, em detalhes:
1. ler(): Este método é usado para obter o próximo caractere do PipedReader. Ele bloqueia até que haja dados para ler ou ocorra um erro.
Sintaxe:
public int read() lança IOException
- Parâmetro: Este método não aceita nenhum parâmetro.
- Tipo de retorno: Este método retorna o próximo caractere como um número inteiro ou retorna -1 se o final do fluxo for atingido.
Exemplo:
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 ()); } }
Saída
Read: G Read: E Read: K
2. leia(char[] carray int offset int maxlen): Este método é usado para ler até caracteres maxlen do PipedReader Stream para a matriz de caracteres. O método é bloqueado se o fim do Stream for atingido ou uma exceção for lançada.
Sintaxe:
public int read(char[] carray int offset int maxlen) lança IOException
- Parâmetro: Este método inclui três parâmetros listados abaixo:
- carro: É o buffer no qual os dados serão lidos.
- desvio: É a posição inicial na matriz
- maxlen: O número máximo de caracteres a serem lidos na matriz.
- Tipo de retorno: Este método retorna maxlen bytes dos dados como um valor inteiro ou retorna -1 quando o final do fluxo é atingido
Exemplo:
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 ); } } }
Saída
Read characters: GEKS
3. fechar(): Este método é usado para fechar o PipedReader.
Sintaxe:
public void close() lança IOException
- Parâmetro: Este método não aceita nenhum parâmetro
- Tipo de retorno: Este método não retorna nada
Exemplo:
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.' ); } }
Saída
Stream closed.
4. pronto(): Este método é usado para verificar se o fluxo está pronto para ser lido.
Sintaxe:
public boolean ready() lança IOException
- Parâmetro: Este método não aceita nenhum parâmetro
- Tipo de retorno: Este método retorna verdadeiro se o fluxo estiver pronto para ser lido, caso contrário, retorna falso.
Exemplo:
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 ()); } }
Saída
Stream is ready to be read: true
5. fechar(): Este método é usado para fechar os fluxos do PipedReader.
Sintaxe:
fechamento de vazio público()
- Parâmetro: Este método não aceita nenhum parâmetro.
- Tipo de retorno: Este método não retorna nada.
Exemplo:
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 (); } } }
Saída
Read: A Stream closed.Criar questionário