readObject(): This method is available in the java.io.ObjectInputStream class of Java.
Syntax:
Object java.io.ObjectInputStream.readObject() throws IOException, ClassNotFoundException
This method read an object from the ObjectInputStream. The class of the object, the signature of the class, and the values of the non-transient and non-static fields of the class and all of its super types are read. Default deserializing for a class can be overridden using the write object and readObject methods.
Objects referenced by this object are read transitively so that a complete equivalent graph of objects is reconstructed by readObject.
The root object is completely restored when all of its fields and the objects it references are completely restored.
Parameters: NA
Returns: the object read from the stream.
Throws:
1. ClassNotFoundException - The class of a serialized object cannot be found.
2. InvalidClassException - Something is wrong with a class used by serialization.
3. StreamCorruptedException - Control information in the stream is inconsistent.
4. OptionalDataException - Primitive data was found in the stream instead of objects.
5. IOException - Any of the usual Input/Output related exceptions.
Approach 1: StreamCorruptedException
Java
import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.io.ObjectInputStream;public class ObjectInputStreamreadObject {public static void main(String[] args)throws IOException, ClassNotFoundException {InputStream in = new FileInputStream("D:\\hell.txt");ObjectInputStream objectInputStream =new ObjectInputStream(in);System.out.println(objectInputStream.readObject());objectInputStream.close();}}
Output:
Exception in thread "main" java.io.StreamCorruptedException: invalid stream header: 61686861 at java.base/java.io.ObjectInputStream.readStreamHeader(ObjectInputStream.java:966) at java.base/java.io.ObjectInputStream.<init>(ObjectInputStream.java:405)
Approach 2: OptionalDataException
Java
import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.io.ObjectInputStream;public class ObjectInputStreamreadObject {public static void main(String[] args)throws IOException, ClassNotFoundException {InputStream in = new FileInputStream("D:\\hello.txt");ObjectInputStream objectInputStream =new ObjectInputStream(in);System.out.println(objectInputStream.readObject());objectInputStream.close();}}
Output:
Exception in thread "main" java.io.OptionalDataException at java.base/java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1727) at java.base/java.io.ObjectInputStream.readObject(ObjectInputStream.java:519) at java.base/java.io.ObjectInputStream.readObject(ObjectInputStream.java:477)
Approach 3: IOException
Java
import java.io.FileInputStream;import java.io.IOException;import java.io.InputStream;import java.io.ObjectInputStream;public class ObjectInputStreamreadObject {public static void main(String[] args)throws IOException, ClassNotFoundException {InputStream in = new FileInputStream("D:\\hello.txt");ObjectInputStream objectInputStream =new ObjectInputStream(in);objectInputStream.close();System.out.println(objectInputStream.readObject());}}
Output:
Exception in thread "main" java.io.IOException: Stream Closed at java.base/java.io.FileInputStream.read0(Native Method) at java.base/java.io.FileInputStream.read(FileInputStream.java:223) at java.base/java.io.ObjectInputStream$PeekInputStream.peek(ObjectInputStream.java:2892) at java.base/java.io.ObjectInputStream$BlockDataInputStream.peek(ObjectInputStream.java:3219) at java.base/java.io.ObjectInputStream$BlockDataInputStream.peekByte(ObjectInputStream.java:3229) at java.base/java.io.ObjectInputStream.readObject0(ObjectInputStream.java:1663) at java.base/java.io.ObjectInputStream.readObject(ObjectInputStream.java:519) at java.base/java.io.ObjectInputStream.readObject(ObjectInputStream.java:477)
Some more methods of ObjectInputStream
available(): This method returns the number of bytes that can be read without blocking.
close(): This method closes the input stream. Must be called to release any resources associated with the stream.
defaultReadObject(): This method read the non-static and non-transient fields of the current class from this stream.
getObjectInputFilter(): This method returns the serialization filter for this stream.
read(): This method reads a byte of data.
read(byte[], int, int): This method reads into an array of bytes.
readBoolean(): This method reads in a boolean.
readByte(): This method reads an 8-bit byte.
readChar(): This method reads a 16-bit char.
readDouble(): This method reads a 64-bit double.
readFields(): This method reads the persistent fields from the stream and makes them available by name.
readFloat(): This method reads a 32-bit float.
readFully(byte[]): This method reads bytes, blocking until all bytes are read.
readFully(byte[], int, int): This method reads bytes, blocking until all bytes are read.
readInt(): This method reads a 32-bit int.
readLong(): This method reads 64-bit long.
readShort(): This method reads a 16-bit short.
readUnshared(): This method reads an "unshared" object from the ObjectInputStream.
readUnsignedByte(): This method reads an unsigned 8-bit byte.
readUnsignedShort(): This method reads an unsigned 16-bit short.
readUTF(): This method reads a String in modified UTF-8 format.
registerValidation(ObjectInputValidation, int): This method registers an object to be validated before the graph is returned.
setObjectInputFilter(ObjectInputFilter): This method set the serialization filter for the stream.
skipBytes(int): This method skips bytes.
No comments:
Post a Comment