假設我有一個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. 在Rails中輸出序列化對象
- 3. 帶有對象列表的對象的PHP序列化
- 4. 從對象創建對象輸出流
- 5. 使用GSON將對象序列化爲JSON輸入流?
- 6. 從TcpClient序列化對象流中投射不同的對象?
- 7. SimpleXML反序列化其他對象序列化的對象給出了UnparseableDateException
- 8. Json.NET序列化我的對象給了我錯誤的輸出
- 9. 在序列化對象列表時輸出id而不是完整對象
- 10. Java - 序列化對象中的序列化對象的問題
- 11. c# - 帶有序列化對象鍵的對象作爲對象的一部分
- 12. 序列化對象
- 13. 序列化對象
- 14. 對象序列化
- 15. 對象序列化
- 16. 對象序列化
- 17. Android和對象輸出流:對峙
- 18. 反序列化對象時出錯
- 19. 序列化對象時出錯
- 20. 反序列化對象時出現EOFException
- 21. XML序列化:對象未序列化
- 22. 反序列化序列化對象
- 23. 序列化對象文件輸出爲空
- 24. 反序列化對象內的對象
- 25. 正確反序列化帶有反序列化器的對象與傑克遜
- 26. 反序列化帶有泛型的複雜對象列表對象C#
- 27. 反序列化拋出ClassNotFoundException在對象中的對象
- 28. 序列化一個對象和反序列化爲對象
- 29. 序列化對象列表
- 30. 序列化對象列表
您可以使用OutputStream編寫任何數據。最簡單的方法是製作對象的字節[] – Hachi