Classe Java PipedReader

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.

Classe io.PipedReader em Java


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