
- 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 - ObjectInputStream skipBytes(int len) method
Description
The Java ObjectInputStream skipBytes(int len) method skips bytes.
skipBytes(int len) only works with primitive types (e.g., int, float).
It does NOT work for skipping entire serialized objects like String, ArrayList, or Custom Objects.
For variable-length data like String, calculate the number of bytes to skip manually.
Declaration
Following is the declaration for java.io.ObjectInputStream.skipBytes(int len) method.
public int skipBytes(int len)
Parameters
len − The number of bytes to be skipped.
Return Value
This method returns the actual number of bytes skipped.
Exception
IOException − Any exception thrown by the underlying InputStream.
Example - Usage of ObjectInputStream skipBytes(int len) method
The following example shows the usage of Java ObjectInputStream skipBytes(int len) method.
ObjectInputStreamDemo.java
package com.tutorialspoint; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; public class ObjectInputStreamDemo { public static void main(String[] args) { String s = "Hello World!"; try { // create a new file with an ObjectOutputStream FileOutputStream out = new FileOutputStream("test.txt"); ObjectOutputStream oout = new ObjectOutputStream(out); // write something in the file oout.writeUTF(s); oout.writeUTF("This is an example"); oout.flush(); // create an ObjectInputStream for the file we created before ObjectInputStream ois = new ObjectInputStream(new FileInputStream("test.txt")); // skip 4 bytes and read the rest ois.skipBytes(4); for (int i = 0; i < ois.available() - 4; i++) { System.out.print("" + (char) ois.readByte()); } } catch (Exception ex) { ex.printStackTrace(); } } }
Output
Let us compile and run the above program, this will produce the following result−
llo World!
Example - Skipping a Float Value Between Two Integers
The following example shows the usage of Java ObjectInputStream skipBytes(int len) method.
ObjectInputStreamDemo.java
package com.tutorialspoint; import java.io.EOFException; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; public class ObjectInputStreamDemo { public static void main(String[] args) { String filename = "data_fixed.bin"; // Step 1: Write an Integer, a Float, and another Integer to the file try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(filename))) { oos.writeInt(100); // 4 bytes oos.writeFloat(3.14f); // 4 bytes oos.writeInt(200); // 4 bytes System.out.println("Data written to file."); } catch (IOException e) { e.printStackTrace(); } // Step 2: Read and skip the float value try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(filename))) { int firstInt = ois.readInt(); // Reads 100 int skippedBytes = ois.skipBytes(4); // Skips the float value (4 bytes) System.out.println("First int: " + firstInt); System.out.println("Bytes actually skipped: " + skippedBytes); if (skippedBytes == 4) { // Ensure skip was successful int secondInt = ois.readInt(); // Reads 200 System.out.println("Second int (after skipping float): " + secondInt); } else { System.out.println("Not enough bytes to skip."); } } catch (EOFException e) { System.out.println("Reached the end of the file unexpectedly."); } catch (IOException e) { e.printStackTrace(); } } }
Output
Let us compile and run the above program, this will produce the following result−
Data written to file. First int: 100 Bytes actually skipped: 4 Second int (after skipping float): 200
Explanation
Writes an integer, a float, and another integer to a file.
Uses skipBytes(4) to skip over the float value while reading.
Example - Skipping multiple bytes
The following example shows the usage of Java ObjectInputStream skipBytes(int len) method.
ObjectInputStreamDemo.java
package com.tutorialspoint; import java.io.EOFException; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; public class ObjectInputStreamDemo { public static void main(String[] args) { String filename = "data.bin"; // Step 1: Write multiple integers to a file try (ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(filename))) { oos.writeInt(10); // 4 bytes oos.writeInt(20); // 4 bytes oos.writeInt(30); // 4 bytes oos.writeInt(40); // 4 bytes System.out.println("Objects written to file."); } catch (IOException e) { e.printStackTrace(); } // Step 2: Read with skipping bytes try (ObjectInputStream ois = new ObjectInputStream(new FileInputStream(filename))) { System.out.println("First int: " + ois.readInt()); // Reads 10 int skipped = ois.skipBytes(4); // Attempt to skip next 4 bytes (should skip 20) System.out.println("Bytes actually skipped: " + skipped); if (skipped == 4) { // Ensure skipping was successful System.out.println("Second int (after skipping): " + ois.readInt()); // Reads 30 } else { System.out.println("Not enough bytes left to skip."); } } catch (EOFException e) { System.out.println("Reached the end of the file unexpectedly."); } catch (IOException e) { e.printStackTrace(); } } }
Output
Let us compile and run the above program, this will produce the following result−
Objects written to file. First int: 10 Bytes actually skipped: 4 Second int (after skipping): 30
Explanation
Check how many bytes were actually skipped by capturing the return value of skipBytes(int len).
Ensure there are enough bytes left before reading.