创建一个Dog类
//如果一个类创建的对象需要被序列化,那么该类必须实现Serializable接口
//Serializable是一个标记接口,没有任何定义,为了告诉JVM该类对象可以被序列化
//需要对象被序列化的时候
//1.把对象保存到文件中(存储到物理介质)
//2.对象需要在网络上传输时
//如果对象没有实现Serializable接口,那么会报异常
public class Dog implements Serializable{
/**
* @Fields serialVersionUID : TODO
*/
private static final long serialVersionUID = 1L;
private String name;
private int age;
private String sex;
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 getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public Dog(String name, int age, String sex) {
super();
this.name = name;
this.age = age;
this.sex = sex;
}
public Dog() {
super();
// TODO Auto-generated constructor stub
}
@Override
序列化和反序列化
public class ObjectStreamDemo {
private static void readObject() {
Dog dog = new Dog("qiwen",6,"母");
File file = new File("C:\\Users\\Desktop\\dog.obj");
try {
InputStream in = new FileInputStream(file);
ObjectInputStream ois = new ObjectInputStream(in);
Dog dog1 = (Dog)ois.readObject();
ois.close();
System.out.println(dog1);
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
}
}
/**
*
* @Description: 对象序列化
* 把对象写入文件:实际写入的是类名、属性名、属性类型、属性的值等
* @param
* @return void
* @throws
*/
private static void writerObject() {
Dog dog = new Dog("qiwen",6,"母");
File file = new File("C:\\Users\\Desktop\\dog.obj");
try {
OutputStream out = new FileOutputStream(file);
ObjectOutputStream oos = new ObjectOutputStream(out);
oos.writeObject(dog);
oos.close();
} catch (FileNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
//writerObject();
readObject();
}
}