Java - PushbackReader ready() method



Description

The Java PushbackReader ready() method tells whether this stream is ready to be read.

ready() method −

  • Checks whether the stream is ready to be read without blocking.

  • Returns −

    • true → data is available to read immediately.

    • false → reading may block.

  • Especially useful before calling read() to avoid waiting.

Declaration

Following is the declaration for java.io.PushbackReader.ready() method.

public boolean ready()

Parameters

NA

Return Value

This method returns true if the next read() is guaranteed not to block for input, false otherwise. Note that returning false does not guarantee that the next read will block.

Exception

IOException − If an I/O error occurs.

Example - Usage of PushbackReader ready() method

The following example shows the usage of PushbackReader ready() method.

PushbackReaderDemo.java

package com.tutorialspoint;

import java.io.IOException;
import java.io.PushbackReader;
import java.io.StringReader;

public class PushbackReaderDemo {
   public static void main(String[] args) {
      String s = "Hello World";

      // create a new StringReader
      StringReader sr = new StringReader(s);

      // create a new PushBack reader based on our string reader
      PushbackReader pr = new PushbackReader(sr, 20);
      
      try {
         // check if the reader is ready
         System.out.println("" + pr.ready());


         // read the first five chars
         for (int i = 0; i < 5; i++) {
            char c = (char) pr.read();
            System.out.print("" + c);
         }

         // change line
         System.out.println();

         // close the stream
         pr.close();

      } catch (IOException ex) {
         ex.printStackTrace();
      }
   }
}

Output

Let us compile and run the above program, this will produce the following result −

true
Hello

Example - Simple use of ready()

The following example shows the usage of PushbackReader ready() method.

PushbackReaderDemo.java

package com.tutorialspoint;

import java.io.IOException;
import java.io.PushbackReader;
import java.io.StringReader;

public class PushbackReaderDemo {
   public static void main(String[] args) {
      try (PushbackReader reader = new PushbackReader(new StringReader("Hello"))) {
         if (reader.ready()) {
            int data = reader.read();
            System.out.println("Read character: " + (char) data);
         } else {
            System.out.println("Reader is not ready.");
         }
      } catch (IOException e) {
         e.printStackTrace();
      }
   }
}

Output

Let us compile and run the above program, this will produce the following result−

Read character: H

Explanation

  • ready() returns true because data is available.

  • read() reads the first character ('H').

Example - Using ready() after unread()

The following example shows the usage of PushbackReader ready() method.

PushbackReaderDemo.java

package com.tutorialspoint;

import java.io.IOException;
import java.io.PushbackReader;
import java.io.StringReader;

public class PushbackReaderDemo {
   public static void main(String[] args) {
      try (PushbackReader reader = new PushbackReader(new StringReader("World"))) {
         int ch = reader.read(); // read 'W'
         System.out.println("First read: " + (char) ch);

         reader.unread(ch); // push it back

         // Now check if data is ready again
         if (reader.ready()) {
            System.out.println("Reader ready after unread: " + (char) reader.read());
         } else {
            System.out.println("Reader not ready after unread.");
         }
      } catch (IOException e) {
         e.printStackTrace();
      }
   }
}

Output

Let us compile and run the above program, this will produce the following result−

First read: W  
Reader ready after unread: W

Explanation

  • First character 'W' is read and then pushed back.

  • ready() returns true because unread buffer has data ready to be read again.

java_io_pushbackreader.htm
Advertisements