對象操作流:可以用于讀寫任意類型的對象
ObjectOutputStream
writerObject
ObjectOutputStream(OutputStream out)
ObjectInputStream
readObject
ObjectInputStream(InputStream in)
注意:使用對象輸出流寫對象,只能使用對象輸入流來讀取對象
只能支持java.io.Serializable接口的對象寫入流中
java.io.Serializable:序列號,是一個標識接口,只起標識只用,沒有方法
當一個類的對象需要IO流進行度讀寫的時候,這個類必須要實現(xiàn)該接口
try{
while(true){
? Object obj = ois.readObject();
? System.out.println(obj);
}
}catch(EOFException e){
? System.out.println("讀到文件末尾");
}
ObjectOutputStream oos =new ObjectOutputStream(new FileOutput("b.txt"));
ArrayList<student> list = new ArrayList<stuednt>();
list.add(new student("wangwu",30));
list.add(new student("zhangsna",28));
oos.writerObject(list);
oos.close();
ObjectInputStream ois = new ObjectInputStream(new FileInputStream("b.txt"));
Object obj = ois.readObject();
ArrayList<Student> list = (ArrayList<Student>) obj;
for(Student student:list){
? System.out.println(student)
}
解決對象序列化接口出現(xiàn)的黃色警告問題
Exception in thread "mian" java.io.InvalidClassExceptio
當Serialization 運行時檢測到某個局域一下問題之一時,拋出異常
該類的序列版本號與從流中讀取的類的描述不匹配
該類包含未知數(shù)據(jù)類型
該類沒有可訪問的無參數(shù)構造方法
解決方法:固定使用同一個serialVersionID
private static final serialVersionID = XXXXL
使用同一個ID時,讀寫不會發(fā)生異常