java基础----IO序列化Serializable
生活随笔
收集整理的這篇文章主要介紹了
java基础----IO序列化Serializable
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
package com.henu.io;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
/** java.io.ObjectOutputStream 類,將Java對(duì)象的原始數(shù)據(jù)類型寫出到文件,實(shí)現(xiàn)對(duì)象的持久存儲(chǔ)。* ObjectInputStream反序列化流,將之前使用ObjectOutputStream序列化的原始數(shù)據(jù)恢復(fù)為對(duì)象。 * * ?public ObjectOutputStream(OutputStream out): 創(chuàng)建一個(gè)指定OutputStream的ObjectOutputStream。* ?public ObjectInputStream(InputStream in): 創(chuàng)建一個(gè)指定InputStream的ObjectInputStream。* * ?一個(gè)對(duì)象要想序列化,必須滿足兩個(gè)條件:–該類必須實(shí)現(xiàn)java.io.Serializable 接口,Serializable 是一個(gè)標(biāo)記接口,不實(shí)現(xiàn)此接口的類將不會(huì)使任何狀態(tài)序列化或反序列化,會(huì)拋出NotSerializableException 。–該類的所有屬性必須是可序列化的。如果有一個(gè)屬性不需要可序列化的,則該屬性必須注明是瞬態(tài)的,使用transient 關(guān)鍵字修飾。* * –public final void writeObject (Object obj) : 將指定的對(duì)象寫出。* –public final Object readObject () : 讀取一個(gè)對(duì)象。* * 類實(shí)現(xiàn)了Serializable接口表示該類的對(duì)象可以序列化* 類中的屬性默認(rèn)都可以序列化,如果不想讓屬性序列化可以使用transient關(guān)鍵字修飾* 序列化:把對(duì)象轉(zhuǎn)換為二進(jìn)制* 反序列化:把二進(jìn)制轉(zhuǎn)換為對(duì)象*/
import java.io.Serializable;public class Demo01_序列化ObjectOutputStream {public static void main(String[] args) throws Exception, IOException {Student student = new Student("李孟冬",22,"alibaba");ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("D:\\IO文檔\\stu.txt"));ObjectInputStream ois = new ObjectInputStream(new FileInputStream("D:\\\\IO文檔\\\\stu.txt"));oos.writeObject(student);Student obj1 = (Student) ois.readObject();System.out.println(obj1);ois.close();oos.close();System.out.println("對(duì)象序列化完畢");}}class Student implements Serializable{private String name;private int age;private transient String password;public Student() {super();// TODO Auto-generated constructor stub}public Student(String name, int age, String password) {super();this.name = name;this.age = age;this.password = password;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}}
package com.henu.io;import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ArrayList;
import java.util.List;
/** 1.將存有多個(gè)自定義對(duì)象的集合序列化操作,保存到list.txt文件中。2.反序列化list.txt ,并遍歷集合,打印對(duì)象信息。*/
public class Demo02_序列化練習(xí) {public static void main(String[] args) throws Exception {Student s1 = new Student("jack",22,"baidu");Student s2 = new Student("tom",23,"alibaba");Student s3 = new Student("rose",28,"huawei");List<Student> list = new ArrayList<>();list.add(s1);list.add(s2);list.add(s3);//序列化ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream("d:/IO文檔/list.txt"));oos.writeObject(list);System.out.println("序列化完畢");//反序列化ObjectInputStream ois = new ObjectInputStream(new FileInputStream("d:/IO文檔/list.txt"));List<Student> list2 = (List<Student>) ois.readObject();for (Student student : list) {System.out.println(student);}oos.close();ois.close();/** 輸出* 序列化完畢com.henu.io.Student@42a57993com.henu.io.Student@4554617ccom.henu.io.Student@1540e19d*/}}
package com.henu.io;import java.io.Serializable;public class Student implements Serializable{private String name;private int age;private transient String password;public Student() {super();// TODO Auto-generated constructor stub}public Student(String name, int age, String password) {super();this.name = name;this.age = age;this.password = password;}public String getName() {return name;}public void setName(String name) {this.name = name;}public int getAge() {return age;}public void setAge(int age) {this.age = age;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}
}
?
?
?
?
總結(jié)
以上是生活随笔為你收集整理的java基础----IO序列化Serializable的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: java基础---IO转换流
- 下一篇: java基础----IO打印流Print