2011-11-23 13 views

Odpowiedz

18

tutaj jest to, co zrobić, aby serializować obiektu

new ObjectOutputStream(outputStream).writeObject(obj); 

jeśli chcesz kontrolować Bajt [] Wyjście

ByteArrayOutputStream buffer = new ByteArrayOutputStream(); 

ObjectOutputStream oos = new ObjectOutputStream(buffer); 

oos.writeObject(obj); 

oos.close(); 

byte[] rawData = buffer.toByteArray(); 

ps. thx do komentarzy poniżej, edytowany jako odpowiednio

+0

Powinieneś dodać także tekst opisowy, aby nie była to poprawna odpowiedź, ale także dobry. –

+1

Potrzebujesz 'writeObject()', a nie 'write()'. I byłoby przydatne wywołanie 'flush()'. –

0

Musisz użyć klasy ObjectOutputStream i jej metod do obiektów *serialize*. Faktycznie ObjectOutputStream jest podklasą java.io.OutputStream (Jest to abstrakcyjna super klasa strumieni zorientowanych na bajty). Spójrz na artykuł na Java Serialization API.

EDIT: Można użyć XMLEncoder

(z Doc: Klasa XMLEncoder jest komplementarna alternatywą ObjectOutputStream i może być używany do generowania tekstowy reprezentacji z JavaBeans w taki sam sposób, że ObjectOutputStream mogą być użyte do wygenerowania binarną reprezentację serializacji obiektów)

+1

istnieje więcej niż jeden sposób serializowania obiektu; nie musisz używać ObjectOutputStream – Hachi

1

Można użyć ObjectOutputStream do "przechwytywania" danych obiektów w tablicy bajtowej i wysłać ją do OutputStream.

String s = "test"; 
ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
ObjectOutputStream oos = new ObjectOutputStream(baos); 
oos.writeObject(s); 
byte[] byteArray = baos.toByteArray(); 
for (byte b : byteArray) { 
    System.out.print((char) b); 
} 

Inną nietypową opcją byłoby serializowanie obiektu w reprezentacji ciągów np. CSV

0

To jest trywialne: można po prostu zawinąć oryginalnego OutputStream w nowym ObjectOutputStream, a następnie za pomocą specjalistycznych metod ObjectOutputStream:

OutputStream myOriginalOutputStream = ...; 
ObjectOutputStream oos = new ObjectOutputStream(myOriginalOutputStream); 
oos.writeObject(new MyObject()); 
oos.flush(); 
oos.close(); 

Wewnętrznie ObjectOutputStream wezwie write() metoda na OutputStream bazowe „s.

Powiązane problemy