How to use ObjectInputStream

ObjectInputStream

In this chapter you will learn:

Use ObjectInputStream

The ObjectInput interface extends the DataInput interface.

The ObjectInputStream class extends the
InputStream class and implements the ObjectInput
interface.
ObjectInputStream is responsible for reading objects from a stream.

ObjectInputStream supports object serialization through
the readObject( ) method.
readObject( ) method is called to deserialize an object.

A constructor of this class is

  • ObjectInputStream(InputStream inStream) throws IOException
    inStream is the input stream from which serialized objects should be read.

Read through ObjectOutputStream

The following code show to use ObjectOutputStream
to read and write primitive data.

import

java.io.BufferedInputStream;

import

java.io.BufferedOutputStream;

import

java.io.EOFException;

import

java.io.FileInputStream;

import

java.io.FileOutputStream;

import

java.io.IOException;

import

java.io.ObjectInputStream;

import

java.io.ObjectOutputStream;

import

java.math.BigInteger;

/

*

j

a

v

a

2

s

.

c

o

m

*

/

public

class

Main {

static

final

String dataFile =

"data.dat"

;

public

static

void

main(String[] args)

throws

IOException, ClassNotFoundException { ObjectOutputStream out = null;

try

{ out =

new

ObjectOutputStream(

new

BufferedOutputStream(

new

FileOutputStream(dataFile))); out.writeObject(

new

BigInteger(

"123"

)); out.writeInt(123); out.writeUTF(

"a String"

); }

finally

{ out.close(); } ObjectInputStream in = null;

try

{ in =

new

ObjectInputStream(

new

BufferedInputStream(

new

FileInputStream(dataFile)));

try

{

while

(true) { BigInteger price = (BigInteger) in.readObject();

int

unit = in.readInt(); String desc = in.readUTF(); System.out.println(price); System.out.println(unit); System.out.println(desc); } }

catch

(EOFException e) { } }

finally

{ in.close(); } } }

The output:

Read object

The following code shows how to use the ObjectInputStream and
ObjectOutputStream to do the object serialization.

import

java.io.FileInputStream;

import

java.io.FileOutputStream;

import

java.io.ObjectInputStream;

import

java.io.ObjectOutputStream;

import

java.io.Serializable;

/

/

f

r

o

m

j

a

v

a

2

s

.

c

o

m

public

class

Main {

public

static

void

main(String args[])

throws

Exception{ MyClass object1 =

new

MyClass(

"Hello"

, -1, 2.1); System.out.println(

"object1: "

+ object1); FileOutputStream fos =

new

FileOutputStream(

"serial"

); ObjectOutputStream oos =

new

ObjectOutputStream(fos); oos.writeObject(object1); oos.flush(); oos.close(); FileInputStream fis =

new

FileInputStream(

"serial"

); ObjectInputStream ois =

new

ObjectInputStream(fis); MyClass object2 = (MyClass) ois.readObject(); ois.close(); System.out.println(

"object2: "

+ object2); } }

class

MyClass

implements

Serializable { String s;

int

i;

double

d;

public

MyClass(String s,

int

i,

double

d) { this.s = s; this.i = i; this.d = d; }

public

String toString() {

return

"s="

+ s +

"; i="

+ i +

"; d="

+ d; } }

Next chapter…

What you will learn in the next chapter: