reg. StreamCorruptedException

Hi,

Can U help me How 2 solve "StreamCorruptedException" problem.

This exception i'm getting when i'm trying 2 use readObject().

First time it is giving EOFException().from next time onwards it is giving StreamCorruptedException().

code is:

import java.io.*;

public class FileTry1

{

// instance variables - replace the example below with your own

private UserRec currUser;

/**

* Constructor for objects of class FileTry1

*/

public FileTry1()

{

// initialise instance variables

UserRec u1 = new UserRec(0, "John3", 1000);

UserRec u2 = new UserRec(1, "joe3", 2000);

UserRec u3 = new UserRec(100, "naren", 2000);

try {

FileOutputStream ostream = new FileOutputStream("t.tmp", true);

ObjectOutputStream p = new ObjectOutputStream(ostream);

p.writeObject(u1);

p.writeObject(u2);

p.writeObject(u3);

p.flush();

ostream.close();

p.close();

}

catch (Exception e) {

System.out.println(e);

} // end catch

ReadIt ri = new ReadIt();

}

public static void main(String args[] ) {

new FileTry1();

System.exit(0);

}

} // end class FileTry1

import java.io.*;

public class UserRec implements Serializable

{

// instance variables - replace the example below with your own

public int userID;

public String userName;

public int salary;

/**

* Constructor for objects of class UserRec

*/

public UserRec()

{

// initialise instance variables

userID = 0;

userName = "";

salary = 0;

}

public UserRec(int id, String name, int sal) {

// overridden constructor w/ values

userID = id;

userName = name;

salary = sal;

} // end constructor...

}

-

import java.io.*;

public class ReadIt

{

// instance variables - replace the example below with your own

private UserRec urec;

/**

* Constructor for objects of class ReadIt

*/

public ReadIt()

{

// initialise instance variables

urec = new UserRec();

FileInputStream istream = null;

ObjectInputStream p = null;

// now try to read the file we just wrote

try {

istream = new FileInputStream("t.tmp");

p = new ObjectInputStream(istream);

System.out.println("Now going to try to read the file back in");

boolean EOF = false;

int count=0;

while ( !EOF ) {

try {

UserRec t_urec = (UserRec) p.readObject();

System.out.println("rec No.: " + t_urec.userID + " Name: " + t_urec.userName);

if(++count == 4) break;

} // end try

catch (Exception f) {

EOF = true;

System.out.println("in ReadIt at EOF catch: " + f);

f.printStackTrace();

} // end catch EOF

} // end while ( !EOF )

istream.close();

p.close();

} // end try

catch (Exception ee) {

System.out.println("Overall ReadIt catch: " +ee);

}

} // end ReadIt()

} // end class ReadIt

Thanks in advance

Naren.

[3273 byte] By [naren_j12] at [2007-9-30 8:18:01]
# 1

in ReadIt class you make 4 as 3 For your convinenece i am pasting all the files back compiled and runned,

import java.io.*;

public class FileTry1

{

// instance variables - replace the example below with your own

private UserRec currUser;

/**

* Constructor for objects of class FileTry1

*/

public FileTry1()

{

// initialise instance variables

UserRec u1 = new UserRec(0, "John3", 1000);

UserRec u2 = new UserRec(1, "joe3", 2000);

UserRec u3 = new UserRec(100, "naren", 2000);

try {

FileOutputStream ostream = new FileOutputStream("t.tmp", true);

ObjectOutputStream p = new ObjectOutputStream(ostream);

p.writeObject(u1);

p.writeObject(u2);

p.writeObject(u3);

p.flush();

p.close();

ostream.close();

}

catch (Exception e) {

System.out.println(e);

} // end catch

ReadIt ri = new ReadIt();

}

public static void main(String args[] ) {

new FileTry1();

System.exit(0);

}

} // end class FileTry1

import java.io.*;

public class ReadIt

{

// instance variables - replace the example below with your own

private UserRec urec;

/**

* Constructor for objects of class ReadIt

*/

public ReadIt()

{

// initialise instance variables

urec = new UserRec();

FileInputStream istream = null;

ObjectInputStream p = null;

// now try to read the file we just wrote

try {

istream = new FileInputStream("t.tmp");

p = new ObjectInputStream(istream);

System.out.println("Now going to try to read the file back in");

boolean EOF = false;

int count=0;

while ( !EOF ) {

try {

UserRec t_urec = (UserRec) p.readObject();

System.out.println("rec No.: " + t_urec.userID + " Name: " + t_urec.userName);

if(++count == 3) break;

} // end try

catch (Exception f) {

EOF = true;

System.out.println("in ReadIt at EOF catch: " + f);

f.printStackTrace();

} // end catch EOF

} // end while ( !EOF )

istream.close();

p.close();

} // end try

catch (Exception ee) {

System.out.println("Overall ReadIt catch: " +ee);

}

} // end ReadIt()

} // end class ReadIt

import java.io.*;

public class UserRec implements Serializable

{

// instance variables - replace the example below with your own

public int userID;

public String userName;

public int salary;

/**

* Constructor for objects of class UserRec

*/

public UserRec()

{

// initialise instance variables

userID = 0;

userName = "";

salary = 0;

}

public UserRec(int id, String name, int sal) {

// overridden constructor w/ values

userID = id;

userName = name;

salary = sal;

} // end constructor...

}

All The Best

ShivaKatula at 2007-7-2 18:36:16 > top of Java-index,Administration Tools,Sun Connection...