假设我正在使用DataInputStream
来接收数据,但我不知道是否应该使用(例如)readUTF
,readInt
或readLong
。有没有一种方法告诉我在另一边写了什么类型的数据?
答案 0 :(得分:5)
不,没有机制可以反省流来查找这些信息。如果您需要这样做,那么发件人需要将元数据添加到流中,以指示接下来将采用何种数据。
例如,发件人可以发送0
字节(可能是“下一个数据项为int
”的信号),然后发送int
,然后发送1
字节(“下一个数据项为long
”的信号),然后是long
本身。
消费者会读取信号,并知道是否要拨打readInt
或readLong
。
或者,您可以使用ObjectInput
和ObjectOutput
代替DataInputStream
,writeObject()
会为您执行内省(如果您使用readObject()
和{{1}})。
答案 1 :(得分:1)
没有。它都是原始的二进制数据。除非你指定你期望的东西,否则就完全相同了。