![](/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.