
- Java.io - Home
- Java.io - BufferedInputStream
- Java.io - BufferedOutputStream
- Java.io - BufferedReader
- Java.io - BufferedWriter
- Java.io - ByteArrayInputStream
- Java.io - ByteArrayOutputStream
- Java.io - CharArrayReader
- Java.io - CharArrayWriter
- Java.io - Console
- Java.io - DataInputStream
- Java.io - DataOutputStream
- Java.io - File
- Java.io - FileDescriptor
- Java.io - FileInputStream
- Java.io - FileOutputStream
- Java.io - FilePermission
- Java.io - FileReader
- Java.io - FileWriter
- Java.io - FilterInputStream
- Java.io - FilterOutputStream
- Java.io - FilterReader
- Java.io - FilterWriter
- Java.io - InputStream
- Java.io - InputStreamReader
- Java.io - LineNumberInputStream
- Java.io - LineNumberReader
- Java.io - ObjectInputStream
- Java.io - ObjectInputStream.GetField
- Java.io - ObjectOutputStream
- io - ObjectOutputStream.PutField
- Java.io - ObjectStreamClass
- Java.io - ObjectStreamField
- Java.io - OutputStream
- Java.io - OutputStreamWriter
- Java.io - PipedInputStream
- Java.io - PipedOutputStream
- Java.io - PipedReader
- Java.io - PipedWriter
- Java.io - PrintStream
- Java.io - PrintWriter
- Java.io - PushbackInputStream
- Java.io - PushbackReader
- Java.io - RandomAccessFile
- Java.io - Reader
- Java.io - SequenceInputStream
- Java.io - SerializablePermission
- Java.io - StreamTokenizer
- Java.io - StringBufferInputStream
- Java.io - StringReader
- Java.io - StringWriter
- Java.io - Writer
- Java.io package Useful Resources
- Java.io - Discussion
Java - ByteArrayInputStream markSupported() method
Description
The Java ByteArrayInputStream markSupported() method is used to check whether the mark(int readAheadLimit) and reset() methods are supported by the stream. For ByteArrayInputStream, the method always returns true because mark() and reset() are supported by this stream.
Declaration
Following is the declaration for java.io.ByteArrayInputStream.markSupported() method −
public boolean markSupported()
Parameters
NA
Return Value
This method returns true for ByteArrayInputStream
Exception
NA
Example - Using ByteArrayInputStream markSupported() method
The following example shows the usage of Java ByteArrayInputStream markSupported() method. We've created a variable buf as byte[] and initialized with few bytes. We've created a ByteArrayInputStream reference and then initialized it with buf variable. Then we're checking if mark is supported using markSupported() method. We're reading first three bytes using read() method and then using mark() method, we've reset the mark current position and then bytes are read again. Then we've called the reset() method to reset the head to previously marked position and bytes are read again.
ByteArrayInputStreamDemo.java
package com.tutorialspoint; import java.io.ByteArrayInputStream; import java.io.IOException; public class ByteArrayInputStreamDemo { public static void main(String[] args) throws IOException { byte[] buf = {65, 66, 67, 68, 69}; ByteArrayInputStream bais = null; try { // create new byte array input stream bais = new ByteArrayInputStream(buf); // test support for mark() and reset() methods invocation boolean isMarkSupported = bais.markSupported(); System.out.println("Is mark supported : "+isMarkSupported); // print bytes System.out.println("Byte read "+ bais.read()); System.out.println("Byte read "+ bais.read()); System.out.println("Byte read "+ bais.read()); System.out.println("Mark() invocation"); // mark() invocation; bais.mark(0); System.out.println("Byte read "+ bais.read()); System.out.println("Byte read "+ bais.read()); System.out.println("Reset() invocation"); // reset() invocation bais.reset(); System.out.println("Byte read "+ bais.read()); System.out.println("Byte read "+ bais.read()); } catch(Exception e) { // if I/O error occurs e.printStackTrace(); } finally { if(bais!=null) bais.close(); } } }
Output
Let us compile and run the above program, this will produce the following result −
Is mark supported : true Byte read 65 Byte read 66 Byte read 67 Mark() invocation Byte read 68 Byte read 69 Reset() invocation Byte read 68 Byte read 69
Example - Using ByteArrayInputStream markSupported() method
The following example shows the usage of Java ByteArrayInputStream markSupported() method. We've created a variable buf as byte[] and initialized with few bytes. We've created a ByteArrayInputStream reference and then initialized it with buf variable. Then we're checking if mark is supported using markSupported() method. We're reading first two bytes using read() method and then using mark() method, we've reset the mark to current position and then bytes are read again. Then we've called the reset() method to reset the head to previously marked position and bytes are read again.
ByteArrayInputStreamDemo.java
package com.tutorialspoint; import java.io.ByteArrayInputStream; import java.io.IOException; public class ByteArrayInputStreamDemo { public static void main(String[] args) throws IOException { byte[] buf = {65, 66, 67, 68, 69}; ByteArrayInputStream bais = null; try { // create new byte array input stream bais = new ByteArrayInputStream(buf); // test support for mark() and reset() methods invocation boolean isMarkSupported = bais.markSupported(); System.out.println("Is mark supported : "+isMarkSupported); // print bytes System.out.println("Byte read "+ bais.read()); System.out.println("Byte read "+ bais.read()); System.out.println("Mark() invocation"); // mark() invocation; bais.mark(0); System.out.println("Byte read "+ bais.read()); System.out.println("Byte read "+ bais.read()); System.out.println("Byte read "+ bais.read()); System.out.println("Reset() invocation"); // reset() invocation bais.reset(); System.out.println("Byte read "+ bais.read()); System.out.println("Byte read "+ bais.read()); } catch(Exception e) { // if I/O error occurs e.printStackTrace(); } finally { if(bais!=null) bais.close(); } } }
Output
Let us compile and run the above program, this will produce the following result −
Is mark supported : true Byte read 65 Byte read 66 Mark() invocation Byte read 67 Byte read 68 Byte read 69 Reset() invocation Byte read 67 Byte read 68
Example - Using ByteArrayInputStream markSupported() method
The following example shows the usage of Java ByteArrayInputStream markSupported() method.
ByteArrayInputStreamDemo.java
package com.tutorialspoint; import java.io.ByteArrayInputStream; public class ByteArrayInputStreamDemo { public static void main(String[] args) { // Create a byte array byte[] data = {72, 101, 108, 108, 111}; // Corresponds to 'H', 'e', 'l', 'l', 'o' // Create a ByteArrayInputStream ByteArrayInputStream inputStream = new ByteArrayInputStream(data); // Check if mark and reset are supported if (inputStream.markSupported()) { System.out.println("mark() and reset() are supported by ByteArrayInputStream."); // Mark the current position inputStream.mark(0); System.out.println("Marked the current position after reading:"); // Read and print the first byte System.out.println((char) inputStream.read()); // Read 'H' // Reset the stream to the marked position inputStream.reset(); System.out.println("Stream reset to the marked position."); // Read and print the first byte again System.out.println((char) inputStream.read()); // Read 'H' again } else { System.out.println("mark() and reset() are not supported by this stream."); } } }
Output
Let us compile and run the above program, this will produce the following result −
mark() and reset() are supported by ByteArrayInputStream. Marked the current position after reading: H Stream reset to the marked position. H
Explanation
Initialization− A ByteArrayInputStream is created using a byte array containing the ASCII values for the characters 'H', 'e', 'l', 'l', 'o'.
Checking Mark Support− The markSupported() method is called to check whether the stream supports the mark() and reset() methods. Since ByteArrayInputStream always supports these methods, it returns true.
Mark and Reset− If markSupported() returns true, the program marks the current position in the stream using mark(), reads a byte, and then uses reset() to return to the marked position. The byte is read again to demonstrate the functionality.
Output− The program shows that mark() and reset() are supported and performs the operations successfully.
Key Points
The markSupported() method is useful for checking if a stream supports mark() and reset() before using them.
For ByteArrayInputStream, markSupported() method always returns true because these operations are inherently supported.
Using mark() and reset() allows re-reading data from a previously marked position.