write和writeInt有什么区别?

时间:2014-09-15 17:17:12

标签: java

使用OuputStream写入文件时,使用writeInt()有什么区别:

public static void makeFile(String name) throws Exception{
    try (
        OutputStream ostr = new FileOutputStream(name);  ) {

        //Uses writeInt() method
        ostr.writeInt(1);

        ostr.close();
    }
 }

并使用write()

 public static void makeFile(String name) throws Exception{
    try (
        OutputStream ostr = new FileOutputStream(name);  ) {

        // Uses the write() method with an int as input
        ostr.write(1);

        ostr.close();
    }
}

这两种方法意味着什么?

2 个答案:

答案 0 :(得分:0)

writeInt不是OutputStream的成员,所以它不会编译。假设您使用DataOutputStream或类似的,它将以big-endian顺序写入32位整数的四个字节。 write只会写一个字节(int中最不重要的)。

可以说,在同一界面中混合这两种不同的想法并不是一个好主意。 DataOutputStream不应该延长OutputStream,但现在要解决这个问题为时已晚。

答案 1 :(得分:0)

writeInt(int)来自DataOutput接口。 (ObjectOutputStream实现ObjectOutput接口,ObjectOutput接口扩展DataOutput接口。)正如您从JavaDoc文档中看到的DataOutput writeInt方法,它以大端顺序将四个字节写入基础流。

write(int)来自OutputStream类,它由ObjectOutputStream扩展。此方法写入int参数的低位字节(“最右侧”8位)。同样,您可以在JavaDoc文档中看到这一点。