由于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
为什么会出现这种差异?
答案 0 :(得分:3)
对象流用于编写对象。这意味着它具有格式化信息,可以说出您所写的内容以及您编写的数据。对象流在开始时也有一个标题,用于检查数据是否为对象流。
数据流只会写入您要求的数据。没有额外的信息。
BTW如果您想查看写入流的内容,您可以写信至ByteArrayOutputStream
并在完成后致电toByteArray()
。无需将其写入您必须回读的文件。