objectinputstream
objectoutputstream
可以通過這兩個流物件直接操作已有物件並將物件進行本地持久化儲存。
儲存後的物件可以進行網路傳輸。
兩個物件的特有方法:
objectinputstream
object readobject():該方法丟擲異常:classnotfountexception。
objectoutputstream
void writeobject(object):被寫入的物件必須實現乙個介面:serializable
否則會丟擲:notserializableexception
serializable:該介面其實就是乙個沒有方法的標記介面。
用於給類指定乙個uid。該uid是通過類中的可序列化成員的數字簽名運算出來的乙個long型的值。
只要是這些成員沒有變化,那麼該值每次運算都一樣。
該值用於判斷被序列化的物件和類檔案是否相容。
如果被序列化的物件需要被不同的類版本所相容。可以在類中自定義uid。
定義方式:static final long serialversionuid = 42l;
注意:對應靜態的成員變數,不會被序列化。
對應非靜態也不想被序列化的成員而言,可以通過transient關鍵字修飾。
通常,這兩個物件成對使用。
該物件並不是流體系中的一員。
該物件中封裝了位元組流,同時還封裝了乙個緩衝區(位元組陣列),通過內部的指標來運算元組中的資料。
該物件特點:
1,該物件只能操作檔案,所以建構函式接收兩種型別的引數。
a,字串路徑。
b,file物件。
2,該物件既可以對檔案進行讀取,也可以寫入。
在進行物件例項化時,必須要指定的該物件的操作模式,r rw等。
該物件中有可以直接操作基本資料型別的方法。
該物件最有特點的方法:
skipbytes():跳過指定的位元組數。
seek():指定指標的位置。
getfilepointer():獲取指標的位置。
通過這些方法,就可以完成對乙個檔案資料的隨機的訪問。
想讀**就讀**,想往**寫就往**寫。
該物件功能,可以讀資料,可以寫入資料,如果寫入位置已有資料,會發生資料覆蓋。也就是可以對資料進行修改。
在使用該物件時,建議資料都是有規則的。或者是分段的。
注意;該物件在例項化時,如果要操作的檔案不存在,會自動建立。
如果要操作的檔案存在,則不會建立,如果存在的檔案有資料。
那麼在沒有指定指標位置的情況下,寫入資料,會將檔案開頭的資料覆蓋。
JAVA物件序列化,反序列化
理解序列化和反序列化對理解物件導向有很大的幫助。舉例如下,序列化格式自己定義 我們有兩個類,動物,人,人繼承動物。其中 人的屬性有 name 名稱 phonenum 手機號碼 等 人的方法有 serialize deserialize 動物的屬性有 mood 情緒 性別 等 動物的方法有 seria...
JAVA 物件序列化
概念 物件序列化,就是將乙個物件轉化為二進位制的資料流 方法 想要被序列化的物件,在定義該類時,必須實現serializable介面,或者實現externalizable介面 物件序列化實質是把物件的屬性進行序列化為二進位制資料流,方法則不管 因為物件直接只有屬性是有差異的 serializable...
Java 物件序列化
物件的序列化就是對引用資料型別的io傳輸,將記憶體中的物件轉換成二進位製流,進而儲存在硬碟檔案中或者進行網路傳輸,這就是序列化 fileoutputstream objectoutputstream writeobject object,序列化的類 flush 將序列化的物件提取出來還原成物件,就是...