Can';t在Java中使用DataOutputStream写入整数

Can';t在Java中使用DataOutputStream写入整数,java,macos,file-io,Java,Macos,File Io,我知道这已经被问过很多次了,但是我已经试过了每个人建议的代码,我无法让它在我的系统上工作 public class Heap implements Serializable { public Attribute[] A; // Array of data, has elements name/String, p1/int, n1/int, ig/double private int n = 0; // num elements private int max = 0; /

我知道这已经被问过很多次了,但是我已经试过了每个人建议的代码,我无法让它在我的系统上工作

public class Heap implements Serializable {
    public Attribute[] A; // Array of data, has elements name/String, p1/int, n1/int, ig/double
    private int n = 0; // num elements
    private int max = 0; // Max elements
    ...
}


public void serialize(Heap hp, String filename) throws IOException {
    DataOutputStream dst = new DataOutputStream(new FileOutputStream(filename));

    dst.writeInt(hp.heapMax());
    dst.writeInt(hp.A.length);

    System.out.println("Writing heap max " + hp.heapMax() + " and heap size " + hp.A.length);

    for(int i = hp.A.length - 1; i > 0; i--) {
        dst.writeInt(hp.A[i].n1);
        dst.writeInt(hp.A[i].p1);
        dst.writeDouble(hp.A[i].ig);
        dst.writeUTF(hp.A[i].name);
    }

    dst.close();
}
此堆对象在属性数组中有1000个项。然而,当我写数据时,当我在vi中打开它时,我在文件中看到的是:
^^^^^^^^^^^^^^^^ Cé
。十六进制编辑器仅显示我
00 00 03 E8 00 03 E9
。那么我做错了什么

java的输出-版本:

java version "1.7.0_25"
Java(TM) SE Runtime Environment (build 1.7.0_25-b15)
Java HotSpot(TM) 64-Bit Server VM (build 23.25-b01, mixed mode)

writeInt
writeDouble
将二进制数据写入流。您看到的是正确的值。既然您认为自己做错了什么,我猜您希望看到字符串值?如果是这样,请使用
writeUTF
而不是
writeInt
writeDouble
writeInt
writeDouble
将二进制数据写入流。您看到的是正确的值。既然您认为自己做错了什么,我猜您希望看到字符串值?如果是这样,请使用
writeUTF
而不是
writeInt
writeDouble
writeInt
writeDouble
将二进制数据写入流。您看到的是正确的值。既然您认为自己做错了什么,我猜您希望看到字符串值?如果是这样,请使用
writeUTF
而不是
writeInt
writeDouble
writeInt
writeDouble
将二进制数据写入流。您看到的是正确的值。既然您认为自己做错了什么,我猜您希望看到字符串值?如果是,,使用
writeUTF
而不是
writeInt
writeDouble

是否仅仅是
writeInt
方法给你带来麻烦?是否仅仅是
writeInt
方法给你带来麻烦?是否仅仅是
writeInt
方法给你带来麻烦?