假设我有OutputStream
(而不是 ObjectOutputStream
)。是否可以使用write方法发送序列化对象?谢谢!
答案 0 :(得分:19)
这是序列化对象的方法
new ObjectOutputStream(outputStream).writeObject(obj);
如果要控制byte []输出
ByteArrayOutputStream buffer = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(buffer);
oos.writeObject(obj);
oos.close();
byte[] rawData = buffer.toByteArray();
PS。 thx用于以下评论,相应编辑
答案 1 :(得分:1)
您可以使用ObjectOutputStream来“捕获”字节数组中的对象数据,并将其发送到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 );
}
另一个非通用选项是在字符串表示中序列化对象,例如CSV
答案 2 :(得分:1)
这很简单:您只需将原始OutputStream
包装在新的ObjectOutputStream
中,然后使用ObjectOutputStream
的专门方法:
OutputStream myOriginalOutputStream = ...;
ObjectOutputStream oos = new ObjectOutputStream(myOriginalOutputStream);
oos.writeObject(new MyObject());
oos.flush();
oos.close();
在内部,ObjectOutputStream
会调用基础OutputStream
的{{1}}方法。
答案 3 :(得分:0)
您必须使用ObjectOutputStream类及其方法来*serialize*
个对象。实际上ObjectOutputStream
是java.io.OutputStream
的子类(它是面向字节的流的抽象超类)。看一下关于Java Serialization API.
编辑: 您可以使用XMLEncoder
(来自Doc:XMLEncoder类是一个补充替代 ObjectOutputStream可用于生成文本 表示JavaBean的方式与 ObjectOutputStream可用于创建二进制表示 可序列化的对象)