D
Daisy
I'd appreciate some help with a weird problem.
A long in an object that I serialize is read as zero every other
iteration. Since I'm creating new instances every time, I don't think
it has to do with reset() or flush(). Also, it seems inefficient to
keep recreating the Byte and ObjectOutput streams. I'm going to try
reset() and flush() rather than new instances once I close this long
issue. Is there a better approach?
// create event
MyEvent event = new MyEvent("test",123);
// serialize the event into a byte stream
ByteArrayOutputStream baos = new ByteArrayOutputStream( );
ObjectOutputStream oos = new ObjectOutputStream( baos );
oos.writeObject( event );
// put the byte stream into our friendly ByteBuffer
ByteBuffer buffer = ByteBuffer.wrap( baos.toByteArray( ) );
public class MyEvent implements Serializable {
private long long1;
private final String string1;
public MyEvent( String stringArg , long longArg ) {
long1 = longArg;
string1=stringArg;
}
}
To read the event, I use:
ByteArrayInputStream bais = new ByteArrayInputStream( buffer.array( )
);
ObjectInputStream ois = new ObjectInputStream( bais );
MyEvent eventRead = ( MyEvent ) ois.readObject( );
Thanks for the help!
A long in an object that I serialize is read as zero every other
iteration. Since I'm creating new instances every time, I don't think
it has to do with reset() or flush(). Also, it seems inefficient to
keep recreating the Byte and ObjectOutput streams. I'm going to try
reset() and flush() rather than new instances once I close this long
issue. Is there a better approach?
// create event
MyEvent event = new MyEvent("test",123);
// serialize the event into a byte stream
ByteArrayOutputStream baos = new ByteArrayOutputStream( );
ObjectOutputStream oos = new ObjectOutputStream( baos );
oos.writeObject( event );
// put the byte stream into our friendly ByteBuffer
ByteBuffer buffer = ByteBuffer.wrap( baos.toByteArray( ) );
public class MyEvent implements Serializable {
private long long1;
private final String string1;
public MyEvent( String stringArg , long longArg ) {
long1 = longArg;
string1=stringArg;
}
}
To read the event, I use:
ByteArrayInputStream bais = new ByteArrayInputStream( buffer.array( )
);
ObjectInputStream ois = new ObjectInputStream( bais );
MyEvent eventRead = ( MyEvent ) ois.readObject( );
Thanks for the help!