1
由於writeByte()的目的在兩個類中都是相同的。但是兩者都寫了不同的內容。爲什麼通過DataOutputStream的writeByte()和ObjectOutputStream的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]的最後一段(https://docs.oracle.com/javase/7/docs/api/java/io/ObjectOutputStream.html)。最重要的是,你的代碼缺少所有必要的'close'語句。 –
應該有更多的輸出。 'ObjectOutputStream'應該以0xAC開始,其餘的流標題開始,並以65的字節結束。您忘記關閉輸出流。 – EJP
@EJP謝謝,我糾正了它。 –