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浮点数。

最佳答案

ObjectOutputStream设计为在写入包括基元的任何信息时写入对象并写入一些元数据。

OOS也被缓冲,因此您可能看不到所有立即写入基础流中的字节。

注意:writeInt与DataOutputStream一起使用4个字节。


  发送x,y与OOS的writeInt()循环浮动


我建议您使用writeFloat(f)编写浮点数。

如果您有一个浮点数数组,建议您使用writeObject()例如

oos.writeObject(someShape);
oos.writeObject(floatArray);

08-18 13:01