標籤:
第一講 對象序列化(持久化)
一、概述:就是把對象封存在硬碟,可以保持資料;關鍵類:ObjectInputStream和ObjectOutpurStream
二、
關鍵字:ObjectOutputStream:方法有writerObject()讀取 ObjectInputStream 方法有readObject() 被序列化的對象需要 implements Serializable
關於被序列化的類需要實現Serializable
它等於一個撮,標識用的,改變類裡面的語句就變了。如果想固定一個撮,可以:
public static final long serialVersionUId=42L;//給他固定一個撮
1、寫入流對象
使用writerObject(Object obj)方法,將對象作為參數傳入
2、讀取流對象
適應readObject(Object obj)方法,方法
註:被static和transient修飾後不能被序列化儲存
1 /*一下主要為了示範如何對象序列化 2 * 關鍵字:ObjectOutputStream:方法有writerObject()讀取 3 * ObjectInputStream 方法有readObject() 4 * 被序列化的對象需要 implements Serializable 5 * 6 */ 7 import java.io.*; 8 public class ObjectStreamDemo { 9 public static void main(String[] args) throws IOException,ClassNotFoundException{10 11 Person p=new Person("水音",25,"kr");12 13 File f=new File("D:\\sy.txt");14 15 writeObj(p,f);16 readObj(f);17 }18 19 private static void writeObj(Person p, File f) {20 ObjectOutputStream oos=null;21 try {22 oos=new ObjectOutputStream(new FileOutputStream(f));23 oos.writeObject(p);24 } catch (IOException e) {25 throw new RuntimeException("對象寫入失敗");26 }27 finally{28 try {29 if(oos!=null)30 oos.close();31 } catch (Exception e2) {32 throw new RuntimeException("關流失敗");33 } 34 }35 }36 //讀取37 private static void readObj(File f) {38 ObjectInputStream ois=null;39 try {40 ois=new ObjectInputStream(new FileInputStream(f));41 Person p=(Person)ois.readObject();42 System.out.println(p);43 } catch (Exception e) {44 // TODO: handle exception45 }46 finally{47 try {48 if(ois!=null)49 ois.close();50 } catch (Exception e3) {51 throw new RuntimeException("關流失敗");52 } 53 }54 55 }56 // 視頻讀取57 public static void readObj()throws IOException, ClassNotFoundException{ 58 ObjectInputStream ois=59 new ObjectInputStream(new FileInputStream("D:\\sy.txt"));60 Person p=(Person)ois.readObject();61 System.out.println(p);62 ois.close();63 }64 65 // 視頻方法儲存66 public static void writeObj()throws IOException{67 68 ObjectOutputStream oos=69 new ObjectOutputStream(new FileOutputStream("D:\\sy.txt"));70 oos.writeObject(new Person("水音",24,"kr"));71 oos.writeObject(new Person("水音",25));72 oos.close();73 }74 }75 76 //建立類77 class Person implements Serializable{//必須實現這個才能被序列化78 public static final long serialVersionUId=42L;//給他固定一個撮79 80 private String name;81 transient int age;//使用transient後就不能被序列化82 static String country="cn";//靜態也不能序列化83 Person(String name,int age,String country){84 this.name=name;85 this.age=age;86 this.country=country;87 }88 public String toString(){89 return name+"="+age+"="+country;90 } 91 }
黑馬程式員——Java基礎——IO流(三)—序列流、管道流、RandomAccessFile類、操作基礎資料型別 (Elementary Data Type)的流對象、運算元組和字串、字元編碼