Serializar objeto con flujo de salida

Supongamos que tengo un OutputStream ( y no un ObjectOutputStream ). ¿Es posible enviar un objeto serializado usando el método de escritura? ¡Gracias!

Esto es lo que haces para serializar el objeto.

 new ObjectOutputStream(outputStream).writeObject(obj); 

Si quieres controlar la salida del byte []

 ByteArrayOutputStream buffer = new ByteArrayOutputStream(); ObjectOutputStream oos = new ObjectOutputStream(buffer); oos.writeObject(obj); oos.close(); byte[] rawData = buffer.toByteArray(); 

PD. Gracias por los comentarios a continuación, editados según corresponda.

Podría usar ObjectOutputStream para “capturar” los datos de los objetos en una matriz de bytes y enviarlos a 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 ); } 

Otra opción no genérica sería serializar el objeto en una representación de cadena, por ejemplo, CSV

Esto es trivial: simplemente puede envolver su OutputStream original en un nuevo ObjectOutputStream , y luego usar los métodos especializados de ObjectOutputStream :

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

Internamente, ObjectOutputStream llamará al método de write() subyacente de OutputStream .

Debe tener que usar la clase ObjectOutputStream y sus métodos para *serialize* objetos. De hecho, ObjectOutputStream es una subclase de java.io.OutputStream (es una súper clase abstracta de flujos orientados a bytes). Echa un vistazo a un artículo sobre la API de serialización de Java.

EDITAR: Puedes usar XMLEncoder

(del Doc: La clase XMLEncoder es una alternativa complementaria al ObjectOutputStream y se puede usar para generar una representación textual de un JavaBean de la misma manera que el ObjectOutputStream se puede usar para crear una representación binaria de objetos serializables)