Classe Java PushbackReader
O Classe PushbackReader em Java faz parte do java.io.package e é usado para ler caracteres de um fluxo. Esta classe nos permite colocar os personagens de volta no fluxo.
Recursos da classe PushbackReader:
- Esta classe usa um buffer que nos permite enviar caracteres de volta ao fluxo.
- Esta aula é ótima para ler textos e verificar caracteres sem usá-los imediatamente. Se o personagem não for necessário, ele pode ser adiado.
Exemplo:
Java // Demonstrating the working // of PushbackReader import java.io.* ; public class Geeks { public static void main ( String [] args ) { String s = 'Hello World!' ; StringReader sr = new StringReader ( s ); // Create a PushbackReader with the StringReader PushbackReader pr = new PushbackReader ( sr ); try { // Read the first character int char1 = pr . read (); System . out . println ( 'Read character: ' + ( char ) char1 ); // Push this character back into the stream pr . unread ( char1 ); // Read the same character again (since we pushed it back) int char2 = pr . read (); System . out . println ( 'Read character again: ' + ( char ) char2 ); // Continue reading the next character int char3 = pr . read (); System . out . println ( 'Next character: ' + ( char ) char3 ); // Close the reader pr . close (); } catch ( IOException e ) { e . printStackTrace (); } } }
Saída
Read character: H Read character again: H Next character: e
Declaração da classe PushbackReader
A declaração da classe PushbackReader está listada abaixo:
classe pública PushbackReader estende FilterReader
Todas as interfaces implementadas:
- Fechável: Esta interface é usada para liberar recursos
- Fechamento automático: Esta interface permite o fechamento automático em uma instrução try-with-resources.
- Legível: Esta interface é usada para ler dados do objeto.
Construtores em PushbackReader
Esta classe consiste em dois 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. PushbackReader(Leitor push): Este construtor é usado para criar um novo PushbackReader com um buffer de pushback padrão.
Sintaxe:
PushbackReader público (push do leitor)
Exemplo:
Java // Demonstrating the working // of PushbackReader(Reader push) import java.io.* ; public class Geeks { public static void main ( String [] args ) { // String to be read String s = 'Hello World!' ; // Create a StringReader to read from the string StringReader sr = new StringReader ( s ); // Create a PushbackReader with the StringReader PushbackReader pr = new PushbackReader ( sr ); try { // Read and print characters int charRead ; while (( charRead = pr . read ()) != - 1 ) { System . out . print (( char ) charRead ); } // Close the PushbackReader pr . close (); } catch ( IOException e ) { e . printStackTrace (); } } }
Saída
Hello World!
2. PushbackReader (tamanho interno do leitor): Este construtor nos permite especificar o tamanho do buffer de pushback
Sintaxe:
public PushbackReader (tamanho int do push do leitor)
Exemplo:
Java // Demonstrating the working // of PushbackReader(Reader push int size) import java.io.* ; public class Geeks { public static void main ( String [] args ) { // String to be read String s = 'Hello World!' ; // Create a StringReader to read from the string StringReader sr = new StringReader ( s ); // Create a PushbackReader with the StringReader // and a specified buffer size of 20 PushbackReader pr = new PushbackReader ( sr 20 ); try { // Read and print characters int charRead ; while (( charRead = pr . read ()) != - 1 ) { System . out . print (( char ) charRead ); } // Close the PushbackReader pr . close (); } catch ( IOException e ) { e . printStackTrace (); } } }
Saída
Hello World!
Métodos Java PushbackReader
A imagem abaixo demonstra os métodos da classe CharArrayWriter.
Agora vamos discutir cada método, um por um, em detalhes:
1. ler(): Este método é usado para ler um caractere por vez do fluxo
Sintaxe:
leitura int pública()
- Parâmetro: Este método não aceita nenhum parâmetro.
- Tipo de retorno: Este método retorna o caractere lido como um número inteiro ou retorna -1 quando o final do fluxo é atingido.
2. leia(char[] carray int offset int maxlen): Este método é usado para ler um bloco de caracteres.
Sintaxe:
leitura int pública (char[] carray int offset int maxlen)
- Parâmetro: Este método inclui três parâmetros listados abaixo
- char[]carray: É uma matriz de caracteres onde os caracteres lidos serão armazenado.
- deslocamento interno: É a posição inicial na matriz
- int maxlen: É o número máximo de caracteres a serem lidos.
- Tipo de retorno: Este método retorna o número de caracteres lidos
3. fechar(): Este método é usado para fechar o leitor
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.
4. marca(int readAheadLimit): Este método é usado para marcar a posição atual no fluxo
Sintaxe:
marca de vazio público (int readAheadLimit)
- Parâmetro: Este método inclui um parâmetro readAheadLimit que especifica o número máximo de caracteres que podem ser lidos antes que a posição da marca se torne inválida.
- Tipo de retorno: Este método não retorna nada
5. pular (n longo): Este método é usado para pular um certo número de caracteres.
Sintaxe:
salto longo público (n longo)
- Parâmetro: Este método inclui um parâmetro longo n que é o número de caracteres a serem ignorados no fluxo.
- Tipo de retorno: Este método retorna o número de caracteres que foram ignorados
6. redefinir (): Este método é usado para voltar à posição onde mark() foi chamado.
Sintaxe:
redefinição 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
7. marcaSuportada(): Este método informa se o stream suporta marcação ou não
Sintaxe:
marca booleana públicaSupported()
- Parâmetro: Este método não aceita nenhum parâmetro
- Tipo de retorno: Este método retorna falso porque a marcação não é suportada.
8. pronto(): Este método verifica se o fluxo está pronto para leitura ou não.
Sintaxe:
booleano público pronto()
- Parâmetro: Este método não aceita nenhum parâmetro
- Tipo de retorno: Este método retorna verdadeiro se o fluxo estiver pronto.
9. não lido (int c): Este método é usado para enviar o personagem de volta ao fluxo.
Sintaxe:
público vazio não lido (int c)
- Parâmetro: Este método usa um único parâmetro que é c, que é o caractere a ser enviado de volta ao fluxo.
- Tipo de retorno: Este método não retorna nada.
10. não lido(char[] carray): Este método é usado para enviar uma matriz de caracteres de volta ao fluxo.
Sintaxe:
public void não lido(char[] carray)
- Parâmetro: Este método leva uma matriz de caracteres para ser enviada de volta ao fluxo.
- Tipo de retorno: Este método não retorna nada.
Programa Java para demonstrar os métodos PushbackReader
Exemplo:
Java // Demonstrating the working // of methods of PushbackReader class import java.io.* ; public class Geeks { public static void main ( String [] args ) throws IOException { String s = 'GeeksForGeeks' ; StringReader sr = new StringReader ( s ); PushbackReader pr = new PushbackReader ( sr ); // Check if the stream is ready System . out . println ( 'Is the stream ready? ' + pr . ready ()); // Use read() and skip() System . out . print ( 'Using read() and skip(): ' ); for ( int i = 0 ; i < 3 ; i ++ ) { char c = ( char ) pr . read (); // Read 1 char System . out . print ( c ); pr . skip ( 1 ); // Skip next char } char c = ( char ) pr . read (); // read next char after 3 skip cycles System . out . print ( c ); // Now read() with array – only 1 char expected char [] arr = new char [ 1 ] ; pr . read ( arr ); System . out . println ( 'nUsing read() with an array: ' + new String ( arr )); // Unread and read back pr . unread ( 'F' ); char nextChar = ( char ) pr . read (); System . out . println ( 'After unread() the next character: ' + nextChar ); // Close the reader pr . close (); } }
Saída
Is the stream ready? true Using read() and skip(): Geso Using read() with an array: r After unread() the next character: FCriar questionário