ObjectOutputStream 和 DataOutputStream 中的同一个方法(writeInt())写入不同的数据?对于原始类型来说,它不应该是相等的吗?
// Output: 14 bytes file
ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("file_14bytes.bin"));
out.writeInt(1);
out.writeInt(2);
out.close();
// Output: 8 bytes file
DataOutputStream dout= new DataOutputStream(new FileOutputStream("file_8bytes.bin"));
dout.writeInt(3);
dout.writeInt(4);
dout.close();
例如,我想使用 objectoutputstream 的 writeObject() 方法在第一个连接上发送对象信息,然后使用 OOS 的 writeInt() 循环发送 x, y float 。
最佳答案
ObjectOutputStream 旨在写入对象,并在写入任何信息(包括基元)时写入一些元数据。
此外,OOS 也会进行缓冲,因此您可能看不到立即写入底层流中的所有字节。
注意:writeInt 在 DataOutputStream 中使用 4 个字节。
send x, y floats in loop with OOS's writeInt()
我建议你使用 writeFloat(f) 来写入 float 。
如果你有一个 float 组,我建议你使用 writeObject() 例如
oos.writeObject(someShape);
oos.writeObject(floatArray);
关于java - 为什么ObjectOutputStream写入14个字节而不是DataOutputStream写入8个字节?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50675733/