假设我有一个OutputStream
(而不是ObjectOutputStream
)。是否可以使用写入方法发送序列化的对象?谢谢!带输出流的序列化对象
回答
这里是你做的序列化对象
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为下面的评论,编辑为相应的
您应该添加一些描述性文字,以便它不仅仅是一个正确的答案,而且也是一个好的答案。 –
您需要'writeObject()',而不是'write()'。调用flush()会很有用。 –
您必须使用ObjectOutputStream类和它的方法来*serialize*
对象。实际上,ObjectOutputStream
是java.io.OutputStream
的一个子类(它是面向字节流的抽象超类)。看看一篇关于Java Serialization API.
编辑: 您可以使用XMLEncoder
(从文件:XMLEncoder类是 互补替代用ObjectOutputStream,可以用来生成一个文本 表示JavaBean的方式与 ObjectOutputStream可用于创建 可序列化对象的相同方式)
有多种方法来序列化对象;你不必使用ObjectOutputStream – Hachi
您可以使用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
这很简单:你可以简单地包裹你原来OutputStream
在新ObjectOutputStream
,然后使用ObjectOutputStream
了专门的方法:
OutputStream myOriginalOutputStream = ...;
ObjectOutputStream oos = new ObjectOutputStream(myOriginalOutputStream);
oos.writeObject(new MyObject());
oos.flush();
oos.close();
内部,ObjectOutputStream
将调用底层OutputStream
的write()
方法。
- 1. 带有对象输入/输出流的Java序列化
- 2. 带有对象列表的对象的PHP序列化
- 3. 从对象创建对象输出流
- 4. SimpleXML反序列化其他对象序列化的对象给出了UnparseableDateException
- 5. 在序列化对象列表时输出id而不是完整对象
- 6. 对象序列化
- 7. 对象序列化
- 8. 序列化对象
- 9. 对象序列化
- 10. Android和对象输出流:对峙
- 11. 序列化对象文件输出为空
- 12. 反序列化序列化对象
- 13. XML序列化:对象未序列化
- 14. 正确反序列化带有反序列化器的对象与杰克逊
- 15. 序列化一个对象和反序列化为对象
- 16. 序列化对象列表
- 17. 序列化对象列表
- 18. 序列化对象的serialVersionUid
- 19. jQuery的对象序列化
- 20. 对象的JACKSON序列化
- 21. 序列化对象的IDictionary
- 22. 序列化对象的XmlDocument
- 23. 通过带有对象输入/输出流的Socket发送的对象的大小真的很重要吗?
- 24. 带输入/输出流的Java进程
- 25. 对象反序列化 - 从序列化对象中取回int数组对象
- 26. 序列化类只输出
- 27. 序列化XML输出
- 28. 序列化/反序列化大对象单次Vs多次序列化/反序列化小对象?
- 29. .NET smartcard - 序列化/反序列化远程对象。输入流不是有效格式
- 30. XML包含对象列表的对象的序列化列表
您可以使用OutputStream编写任何数据。最简单的方法是制作对象的字节[] – Hachi