Java 为什么ObjectOutputStream使用DataOutputStream写入14字节而不是8字节?
ObjectOutputStream和DataOutputStream中的相同方法(writeInt())写入不同的数据?对于基本类型,它不应该是相等的吗Java 为什么ObjectOutputStream使用DataOutputStream写入14字节而不是8字节?,java,networking,objectoutputstream,dataoutputstream,Java,Networking,Objectoutputstream,Dataoutputstream,ObjectOutputStream和DataOutputStream中的相同方法(writeInt())写入不同的数据?对于基本类型,它不应该是相等的吗 // Output: 14 bytes file ObjectOutputStream out = new ObjectOutputStream(new FileOutputStream("file_14bytes.bin")); out.writeInt(1); out.wri
// 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浮动。objectoutputstream设计用于在写入包括原语在内的任何信息时写入对象和一些元数据 此外,OOS是缓冲的,因此您可能看不到在底层流中立即写入的所有字节 注意:writeInt与DataOutputStream一起使用4个字节 发送x,y在OOS的writeInt()的循环中浮动 我建议您使用writeFloat(f)来编写浮动 如果您有一个浮点数组,我建议您使用writeObject(),例如
ObjectOutputStream
是您想要使用Java序列化的时候(由于几个原因,包括安全考虑,这有点不鼓励)DataOutputStream
是指您希望完全控制写入每个字节的方式。从你的问题来看,你想用后者。
oos.writeObject(someShape);
oos.writeObject(floatArray);