![](/img/trans.png)
[英]What's the different between DataOutputStream write( int i ) and writeByte( int i )
[英]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.