对象序列化
1、序列化是对引用类型的读写操作。
2、将对象从程序写入外部存储器的过程就是序列化。
3、将对象从外部存储器读到程序的过程就是反序列化。
import java.io.File;
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.io.Serializable;
/*
* 对象序列化:测试对象输入流、输出流
*/
public class TestObjectInputStreamOutputStream {
public static void main(String[] args) {
writeObj();
readObj();
}
/*
* 对象序列化:对象输出流--写
*/
public static void writeObj(){
Person p=new Person("小林",20);
File f=new File("E:\\123.txt");
FileOutputStream fos=null;
ObjectOutputStream oos=null;
try {
fos = new FileOutputStream(f);
oos=new ObjectOutputStream(fos);
oos.writeObject(p);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally
{
try {
fos.close();
oos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/*
* 对象反序列化:对象输入流-读
*/
public static void readObj(){
File f=new File("E:\\123.txt");
FileInputStream fis=null;
ObjectInputStream ois=null;
try {
fis = new FileInputStream(f);
ois=new ObjectInputStream(fis);
Person p=(Person)ois.readObject();
System.out.println(p.name+" "+p.age);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}finally
{
try {
fis.close();
ois.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
/*
* 创建Person类
* 属性:姓名,年龄
*/
}
class Person implements Serializable{
String name;
int age;
public Person(){
}
public Person(String name,int age)
{
super();
this.name=name;
this.age=age;
}
}