因为 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/