【发布时间】:2017-02-13 23:18:07
【问题描述】:
因为 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
为什么会有这种差异?
【问题讨论】:
-
阅读ObjectOutputStream Javadoc的最后一段。最重要的是,您的代码缺少所有必要的
close语句。 -
应该有更多的输出。
ObjectOutputStream应该以 0xAC 和流标头的其余部分开头,并以 65 字节结束。您忘记关闭输出流。 -
@EJP 谢谢,我更正了。
标签: java io objectoutputstream dataoutputstream