Класс Java.io.PushbackReader в Java

Опубликовано: 15 Февраля, 2022

java.io.PushbackReader - это класс считывателя потока символов, который позволяет помещать символы обратно в поток.

Декларация:

открытый класс PushbackReader
   расширяет FilterReader

Конструкторы:

  • PushbackReader (Reader push): создает новый Pushback Reader - «push» с символьным буфером Pushback.
  • PushbackReader (Reader push, int size): Создает новое средство чтения Pushback с буфером Pushback определенного размера.

Методы класса PushbackReader:

  • read() : java.io.PushbackReader.read() reads a single character.
    Syntax :
    public int read()
    Parameters :
    -----------
    Return : 
    reads single character from the Pushback buffer 
    else, -1 i.e. when end of file is reached.
    Exception :
    ->  IOException : If I/O error occurs.
  • read(char[] carray, int offset, int maxlen) : java.io.PushbackReader.read(char[] carray, int offset, int maxlen) reads some portion of the character array
    Syntax :
    public int read(char[] carray, int offset, int maxlen)
    Parameters :
    carray : destination buffer to be read into
    offset : starting position of the carray
    maxlen : maximum no. of characters to be read
    Return : 
    reads some portion of the character array
    else, -1 i.e. when end of file is reached.
    Exception :
    ->  IOException : If I/O error occurs.
  • close() : java.io.PushbackReader.close() closes the PushbackReader and releases system resources associated with this stream to Garbage Collector.
    Syntax :
    public void close()
    Parameters :
    ------
    Return : 
    void
    Exception :
    ->  IOException : If I/O error occurs.
  • mark(int arg) : java.io.PushbackReader.mark(int arg) marks the current position of the PushbackReader. In case of PushbackReader, this method always throws an exception.
    Syntax :
    public void mark(int arg)
    Parameters :
    arg : integer specifying the read limit of the Stream
    Return : 
    void
  • skip(long char) : java.io.PushbackReader.skip(long char) skips and discards ‘char’ no. of characters from PushbackReader data.
    Syntax :
    public long skip(long char)
    Parameters : 
    char : no. of bytes of PushbackReader data to skip.
    Return : 
    no. of bytes to be skipped
    Exception: 
    -> IOException : in case I/O error occurs
  • reset() : java.io.PushbackReader.reset() is invoked by mark() method. It repositions the PushbackReader to the marked position. In case of PushbackReader, this method always throws an exception.
    Syntax :
    public void reset()
    Parameters :
    ----
    Return : 
    void
    Exception :
    ->  IOException : If I/O error occurs.
    
  • markSupported() : java.io.PushbackReader.markSupported() Tells whether this stream supports the mark() operation, which it does not.
    Syntax :
    public boolean markSupported()
    Parameters :
    -------
    Return : 
    true if PushbackReader supports the mark() method  else,false
  • ready() : java.io.PushbackReader.ready() tells whether the stream is ready to be read or not
    Syntax :



    public boolean ready()
    Parameters :
    -------
    Return : 
    true if the stream is ready to be read else,false
  • unread(int char) : java.io.PushbackReader.unread(int char) pushes a single character to Pushback buffer. The next character to be read will have (char)char value, after this method returns.

    Syntax :

    public void unread(int char)
    Parameters :
    char : int value of the character to be pushed back
    Return : 
    void
    Exception :
    ->  IOException : If I/O error occurs or Pushback buffer is full.
    
  • unread(char[] carray) : java.io.PushbackReader.unread(char[] carray) pushes an array of character to Pushback buffer. The array being pushed will have its index starting from 0.
    Syntax :
    public void unread(char[] carray)
    Parameters :
    carray : character array to be pushed back
    Return : 
    void
    Exception :
    ->  IOException : If I/O error occurs or Pushback buffer is full.
    

    Java code explaining the PushbackReader method : read(char[] carray), close(), markSupported(), read(), mark(), ready(), skip(), unread()

    // Java program illustrating the working of PushbackReader
    // read(char[] carray), close(), markSupported()
    // read(), mark(), ready(), skip(), unread()
      
    import java.io.*;
    public class NewClass
    {
        public static void main(String[] args) throws IOException
        {
            try
            {
                // Initializing a StringReader and PushbackReader
                String s = "GeeksForGeeks";
      
                StringReader str_reader = new StringReader(s);
                PushbackReader geek_pushReader1 = new PushbackReader(str_reader);
                PushbackReader geek_pushReader2 = new PushbackReader(str_reader);
      
                // Use of ready() method :
                System.out.println("Is stream1 ready : " + geek_pushReader1.ready());
                System.out.println("Is stream2 ready : " + geek_pushReader2.ready());
      
                // Use of read() :
                System.out.println(" We have used skip() method in 1 : ");
                System.out.print(" Use of read() in 1 : ");
                for (int i = 0; i < 6; i++)
                {
                    char c = (char) geek_pushReader1.read();
                    System.out.print(c);
      
                    // Use of skip() :
                    geek_pushReader1.skip(1);
                }
                System.out.println("");
      
                // USing read() :
                char[] carray = new char[20];
                System.out.println("Using read() in 2 : " + geek_pushReader2.read(carray));
      
      
                // USe of markSupported() :
       System.out.println(" Is mark supported in 1  : " + geek_pushReader1.markSupported());
      
                geek_pushReader2.unread("F");
      
                // read the next char, which is the one we unread
                char c3 = (char) geek_pushReader2.read();
                System.out.println("USe of unread() : " + c3);
      
                // USe of mark() :
                geek_pushReader1.mark(5);
      
                // Use of close() :
                geek_pushReader1.close();
      
            }
            catch (IOException excpt)
            {
                System.out.println("mark not supported in 1");
      
            }
        }
    }

    Output :

    Is stream1 ready : true
    Is stream2 ready : true
    
    We have used skip() method in 1 : 
    
    Use of read() in 1 : GesoGe
    Using read() in 2 : 1
    
    Is mark supported in 1 : false
    USe of unread() : F
    mark not supported in 1

    This article is contributed by Mohit Gupta . If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

    Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above.

    Attention reader! Don’t stop learning now. Get hold of all the important Java Foundation and Collections concepts with the Fundamentals of Java and Java Collections Course at a student-friendly price and become industry ready. To complete your preparation from learning a language to DS Algo and many more,  please refer Complete Interview Preparation Course.