繁体   English   中英

为什么DataOutputStream的writeByte()和ObjectOutputStream的writeByte()写的字节不同?

[英]Why Bytes written by writeByte() of DataOutputStream and writeByte() of ObjectOutputStream are different?

因为writeByte()的目的在两个类中都是相同的。 但两者都在写不同的内容。

import java.io.*;
class First
{
        public static void main(String[] args) throws IOException
        {
                FileOutputStream fos = new FileOutputStream("b.txt");
Line 1:         ObjectOutputStream oos = new ObjectOutputStream(fos);
Line 2:         DataOutputStream oos = new DataOutputStream(fos);
                oos.writeByte(65);
                oos.close();
                FileInputStream fis = new FileInputStream("b.txt");
                int x=0;
                System.out.println("Output");
                while((x=fis.read())!=-1)
                {
                        System.out.println(x);
                }
                fis.close();
        }
}

如果第1行已注释掉,则输出为:

65

如果第2行已注释掉,则输出为:

172
237
0
5
119
1
65

为何如此区别?

对象流用于编写对象。 这意味着它具有格式化信息,可以说出您所写的内容以及您编写的数据。 对象流在开始时还有一个标题,用于检查数据是否为对象流。

数据流只会写入您要求的数据。 没有额外的信息。

BTW如果你想看看写入Stream的内容,你可以写一个ByteArrayOutputStream并在完成后调用toByteArray() 无需将其写入您必须回读的文件。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM