2012-03-06 53 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或其他任何东西来读取。