gpt4 book ai didi

java - 为什么 DataOutputStream 的 writeByte() 和 ObjectOutputStream 的 writeByte() 写入的字节不一样?

转载 作者:行者123 更新时间:2023-11-29 04:39:24 26 4
gpt4 key购买 nike

因为 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();
}
}

如果第一行被注释掉,输出为:

65

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

172
237
0
5
119
1
65

为什么会有这种差异?

最佳答案

对象流用于写入对象。这意味着它有格式化信息来说明你写了什么以及你写的数据。 Object Streams 在开头也有一个 header ,用于检查数据是否为 ​​Object Stream。

Data Streams 只写​​入您要求的数据。没有额外的信息。

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

关于java - 为什么 DataOutputStream 的 writeByte() 和 ObjectOutputStream 的 writeByte() 写入的字节不一样?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39875192/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com