Java - PushbackInputStream markSupported() method



Description

The Java PushbackInputStream markSupported() method tests if this input stream supports the mark and reset methods, which it does not.

The markSupported() method

  • Returns false for PushbackInputStream because it does not support the mark() and reset() methods.

  • This method is useful when working with generic InputStream references to check if mark/reset can be used.

Declaration

Following is the declaration for java.io.PushbackInputStream.markSupported() method.

public boolean markSupported()

Parameters

NA

Return Value

This method returns false, since this class does not support the mark and reset methods.

Exception

NA

Example - Usage of PushbackInputStream markSupported() method

The following example shows the usage of PushbackInputStream markSupported() method.

PushbackInputStreamDemo.java

package com.tutorialspoint;

import java.io.ByteArrayInputStream;
import java.io.InputStream;
import java.io.PushbackInputStream;

public class PushbackInputStreamDemo {
   public static void main(String[] args) {
      
      // declare a buffer and initialize its size:
      byte[] arrByte = new byte[1024];

      // create an array for our message
      byte[] byteArray = new byte[]{'H', 'e', 'l', 'l', 'o'};


      // create object of PushbackInputStream class for specified stream
      InputStream is = new ByteArrayInputStream(byteArray);
      PushbackInputStream pis = new PushbackInputStream(is);

      // check if mark is supported
      System.out.println("" + pis.markSupported());
      
      try {
         // read from the buffer one character at a time
         for (int i = 0; i < byteArray.length; i++) {

            // read a char into our array
            arrByte[i] = (byte) pis.read();

            // display the read byte
            System.out.print((char) arrByte[i]);
         }
      } catch (Exception ex) {
         ex.printStackTrace();
      }
   }
}

Output

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

false
Hello

Example - Directly checking markSupported()

The following example shows the usage of PushbackInputStream markSupported() method.

PushbackInputStreamDemo.java

package com.tutorialspoint;

import java.io.ByteArrayInputStream;
import java.io.PushbackInputStream;

public class PushbackInputStreamDemo {
   public static void main(String[] args) {
      byte[] data = "Hello".getBytes();
      PushbackInputStream pbis = new PushbackInputStream(new ByteArrayInputStream(data));

      System.out.println("Does PushbackInputStream support mark()? " + pbis.markSupported());
      // Output: false
   }
}

Output

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

Does PushbackInputStream support mark()? false

Explanation

  • This example directly checks if mark() is supported.

  • Output will be false because PushbackInputStream doesn't implement mark/reset behavior.

Example - Conditional usage based on markSupported()

The following example shows the usage of PushbackInputStream markSupported() method.

PushbackInputStreamDemo.java

package com.tutorialspoint;

import java.io.ByteArrayInputStream;
import java.io.PushbackInputStream;

public class PushbackInputStreamDemo {
   public static void main(String[] args) {
      byte[] data = "Mark Test".getBytes();
      PushbackInputStream pbis = new PushbackInputStream(new ByteArrayInputStream(data));

      if (pbis.markSupported()) {
         pbis.mark(5); // This will never be called
         System.out.println("mark() is supported.");
      } else {
         System.out.println("mark() is NOT supported. Use unread() instead.");
      }
   }
}

Output

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

mark() is NOT supported. Use unread() instead.

Explanation

  • This shows how to check before calling mark() to avoid incorrect assumptions.

  • Since markSupported() returns false, we suggest using unread() as a more appropriate alternative for limited pushback functionality.

java_io_pushbackinputstream.htm
Advertisements