首页 文章

Java - ObjectInput / OutputStream是否与DataInput / OutputStream兼容?

提问于
浏览
1

例如:

  • 我使用ObjectInput / OutputStream通过Socket outputStream发送一个byte []:
ObjectOutputStream myOutput = new ObjectOutputStream(mySocket.getOutputStream());
myOutput.write(myByteArray);
  • 在另一端,他使用DataInputStream(也可以使用其他InputStream)来读取:
DataInputStream hisInput = new DataInputStream(hisSocket.getInputStream());
hisInput.read(hisByteArray);

所以我的问题是:

  • 接收器是否正确读取了字节[]?

  • 使用writeObject和readUTF的String怎么样?

信息:

  • 我只能使用Java库(JRE8),并且是Java的Stream新手 .

  • 除了知道他们没有使用ObjectInput / OutputStream之外,我无法指望或强迫对方使用Stream

  • 我问了这个问题,因为使用ObjectInput / OutputStream可以为我节省一些工作,我接受了我的其他question的建议 .

1 回答

  • 1

    接收器是否正确读取字节[]?

    没有 .

    使用writeObject和readUTF的String怎么样?

    没有 .

    如果使用 ObjectOutputStream.writeObject 进行写入,则读取流的唯一实用方法是使用 ObjectOutputStream.readObject .

    从理论上讲,您可以自己编写代码来实现serialization protocol(使用byte或"data"输入流),但这不是一种明智/实用的方法 .


    除了知道他们没有使用ObjectInput / OutputStream之外,我不能指望或强迫对方使用Stream

    无论你在编写时使用什么格式,你都会强迫另一端使用能够读取它的东西 . 强制另一端(如果它是Java)使用ObjectInputStream不应该是一个问题 . 另一个问题是,如果另一端可以用另一种语言实现,那么你可能应该考虑像JSON或XML这样的编码方案 .

相关问题