package io03;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.Date;
/**
- 对象流:
- 1.先写出后读取
- 2.读取的顺序与写出保持一致
- 3.不是所有的对象都可以序列化Serializable
- ObjectOutputStream
- ObjectInputStream
- @author
*/
public class TestObject {
public static void main(String[] args) throws IOException, ClassNotFoundException {
//写出 序列化
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ObjectOutputStream oos = new ObjectOutputStream(new BufferedOutputStream(baos));
//操作数据类型+数据
oos.writeBoolean(false);
//对象
oos.writeObject(new Date());
oos.writeObject("神射手");
Employee emp = new Employee("马云",400.0);
oos.writeObject(emp);
oos.flush();
//读取 反序列化
ObjectInputStream ois = new ObjectInputStream(new BufferedInputStream(new ByteArrayInputStream(baos.toByteArray())));
boolean flag = ois.readBoolean();
//对象的数据还原
Object date = ois.readObject();
Object s = ois.readObject();
Object employee = ois.readObject();
if(s instanceof String) {
String str = (String)s;
System.out.println(str);
}
if(date instanceof Date) {
Date d = (Date)date;
System.out.println(d);
}
if(employee instanceof Employee) {
Employee e = (Employee)employee;
System.out.println(e.getName()+"-->"+e.getSalary());
}
}
}
//javabean 封装数据
class Employee implements java.io.Serializable{
private transient String name;//该数据不需要序列化(transient)
private double salary;
public Employee() {
}
public Employee(String name,Double salary) {
this.name = name;
this.salary = salary;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public double getSalary() {
return salary;
}
public void setSalary(double salary) {
this.salary = salary;
}
}