Hallo Zusammen,
Ich möchte Java-Objekte als String serialisieren. Serialisieren in einen FileInputStream wird ja breit beschrieben.
Ich möchte aber ein Objekt nicht als Datei speichern, sondern es als String serialisieren und in eine XML-Datei packen.
Ich habe mir dafür dann folgendes Verfahren über ByteArrayInputStream zusammengeschustert und es funktioniert unter Windows (Java 1.5.0_11-b03) wie es soll. Unter Linux (Java 1.5.0_09-b03) allerdings kommt es bei der Ausführung zu folgender Exception
Exception in thread "main" java.io.StreamCorruptedException: invalid stream header
at java.ibjectInputStream.readStreamHeader(Unknown Source)
at java.ibjectInputStream.<init>(Unknown Source)
at SerializeTest.deserializeFromString(SerializeTest.java:25)
at SerializeTest.main(SerializeTest.java:47)
Hat jemand schon mal ähnliches Problem gehabt? Habei ich irgendwas bei dem Serialisierungsschritt vergessen?
Für eine Lösung schonb mal im Voraus Dicken Dank!
Mein Testprogramm gebe ich hier mit.
Ich möchte Java-Objekte als String serialisieren. Serialisieren in einen FileInputStream wird ja breit beschrieben.
Ich möchte aber ein Objekt nicht als Datei speichern, sondern es als String serialisieren und in eine XML-Datei packen.
Ich habe mir dafür dann folgendes Verfahren über ByteArrayInputStream zusammengeschustert und es funktioniert unter Windows (Java 1.5.0_11-b03) wie es soll. Unter Linux (Java 1.5.0_09-b03) allerdings kommt es bei der Ausführung zu folgender Exception
Exception in thread "main" java.io.StreamCorruptedException: invalid stream header
at java.ibjectInputStream.readStreamHeader(Unknown Source)
at java.ibjectInputStream.<init>(Unknown Source)
at SerializeTest.deserializeFromString(SerializeTest.java:25)
at SerializeTest.main(SerializeTest.java:47)
Hat jemand schon mal ähnliches Problem gehabt? Habei ich irgendwas bei dem Serialisierungsschritt vergessen?
Für eine Lösung schonb mal im Voraus Dicken Dank!
Mein Testprogramm gebe ich hier mit.
Code:
import java.io.*;
public class SerializeTest {
public String serializeToString (String objectToWrite)
throws IOException, ClassNotFoundException {
OutputStream out = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream( out );
oos.writeObject( objectToWrite );
oos.close();
out.close();
// String ausgeben
String output = out.toString();
return output;
}
public String deserializeFromString (String serializedObject)
throws IOException, ClassNotFoundException {
byte[] pick = serializedObject.getBytes();
InputStream in = new ByteArrayInputStream(pick);
ObjectInputStream ois = new ObjectInputStream(in);
String deserializedObject = (String) ois.readObject();
ois.close();
in.close();
return deserializedObject;
}
public static void main( String[] args )
throws IOException, ClassNotFoundException {
SerializeTest app = new SerializeTest();
// construct test object
String original = new String("Hello World!");
// serialize
String output = app.serializeToString(original);
// deserialize
String des = app.deserializeFromString(output);
// test
System.out.println(des.toString());
}
}