2012-03-06 54 views
0

我想用BufferedReader讀取一個序列化的java對象,這可靠嗎?或者我需要執行檢查總和以確保數據?謝謝。Java Socket BufferedReader是否需要檢查和檢查數據?

+0

難道你不想爲此使用[ObjectInputStream](http://docs.oracle.com/javase/7/docs/api/java/io/ObjectInputStream.html)(可能包裹在[BufferedInputStream ](http://docs.oracle.com/javase/7/docs/api/java/io/BufferedInputStream.html))? – devconsole 2012-03-06 16:10:53

+1

BufferedReader用於測試,Java序列化使用二進制數據,如果您使用BufferedReader讀取它,它將被損壞。最簡單的解決方案是使用專爲二進制數據設計的BufferedInputStream,並且您不應該受到損壞。 – 2012-03-06 16:37:26

回答

1

您不能使用BufferedReader來讀取序列化對象。 Java的有兩種I/O接口和類:

  • 流(實現這些InputStreamOutputStream和一切)讀取和寫入二進制數據。
  • 閱讀和編寫文本(解釋爲字符的二進制數據)的讀者和作者(ReaderWriter)。

由於序列化對象是二進制數據而不是文本,因此不能使用Reader來讀取序列化對象。

0

TCP guaranties數據完整性。所以你不需要額外的檢查總結。

而反序列化將失敗,並在出現問題時出現異常。

0

我不明白這個問題。序列化對象應該用ObjectInputStream而不是BufferedReader或其他任何東西來讀取。