从DataInputStream读取而不知道输出类型

时间:2011-05-08 13:42:49

标签: java stream

假设我正在使用DataInputStream来接收数据,但我不知道是否应该使用(例如)readUTFreadIntreadLong。有没有一种方法告诉我在另一边写了什么类型的数据?

2 个答案:

答案 0 :(得分:5)

不,没有机制可以反省流来查找这些信息。如果您需要这样做,那么发件人需要将元数据添加到流中,以指示接下来将采用何种数据。

例如,发件人可以发送0字节(可能是“下一个数据项为int”的信号),然后发送int,然后发送1字节(“下一个数据项为long”的信号),然后是long本身。

消费者会读取信号,并知道是否要拨打readIntreadLong

或者,您可以使用ObjectInputObjectOutput代替DataInputStreamwriteObject()会为您执行内省(如果您使用readObject()和{{1}})。

答案 1 :(得分:1)

没有。它都是原始的二进制数据。除非你指定你期望的东西,否则就完全相同了。