序列化:
将对象写(writeObject)到文件中的过程 ObjectOutputStream
步骤:
- 1.属性类中:
implements Serializable
接口 - 2.private static final long serialVersionUID = 1L;
- 3.创建
serialVersionUID
的构造器 - 4.主类中:集合转为数组
集合.toArray(数组名);
- 5.把数组序列化:
ObjectOutputStream对象.writeObject(数组名)
- 6.flush()
例子:
import java.io.Serializable;
public class Student implements Serializable {
//用于区分所属类型
private static final long serialVersionUID = 1L;
private String no;
private String name;
public String getNo() {
return no;
}
public void setNo(String no) {
this.no = no;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public static long getSerialversionuid() {
return serialVersionUID;
}
}
主类:
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectOutputStream;
import java.io.OutputStream;
import java.util.ArrayList;
import java.util.List;
/**
* @author CC
*序列化 对象保存到文件中的过程 ObjectOutputStream
反序列化 从文件中读取对象的过程 ObjectInputStream
*/
public class Demo2 {
public static void main(String[] args) {
//初始化集合
List<Student> listStu=new ArrayList<Student>();
for(int i=0; i<10; i++){
Student s=new Student();
s.setNo("100"+i);
s.setName("小"+i);
listStu.add(s);
}
//创建IO流
FileOutputStream os=null;
ObjectOutputStream oos=null;
try {
os=new FileOutputStream("f:\\stu.ccc");
oos=new ObjectOutputStream(os);
//把集合转换成数组
Student[] aryStu=new Student[listStu.size()];
listStu.toArray(aryStu);
//把数组进行序列化
oos.writeObject(aryStu);
oos.flush();
System.out.println("序列化完毕");//文件是乱码
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}