簡體   English   中英

為什么DataOutputStream的writeByte()和ObjectOutputStream的writeByte()寫的字節不同?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM