本文共 2196 字,大约阅读时间需要 7 分钟。
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;/** * 对象流 * 序列化:对象输出流 对象->字节数组(字节流)->(文件,数据库,内存等) ObjectOutputStream * 反序列化:对象输入流 (文件,数据库,内存等)->字节数组(字节流)-> 对象 ObjectInputStream * 先写出后读取 * * 并非所有对象都可以序列化 * * 必须实现serializable接口(空接口) * @author 佳哥 * */public class ObjectOITest { public static void main(String[] args) throws IOException, ClassNotFoundException { //序列化 //字节数组输出流 ByteArrayOutputStream baos = new ByteArrayOutputStream(); //BufferedOutputStream(...)提高效率 ObjectOutputStream oos = new ObjectOutputStream(new BufferedOutputStream(baos)); //加入对象 oos.writeObject("我叫佳哥,在测试对象流知识");//字符串也是对象String其中也实现了Serializable接口 oos.writeObject(new Date());//当前日期 Animals animals = new Animals("狗","白",2.0);//创建对象 oos.writeObject(animals); oos.flush(); //反序列化 byte[] oosData = baos.toByteArray(); ObjectInputStream ois = new ObjectInputStream(new ByteArrayInputStream(oosData)); //读取一定要按上面写入的顺序读 Object str = ois.readObject(); Object date = ois.readObject(); Object dog = ois.readObject(); //还原数据 if(str instanceof String) { String strObject = (String)str; System.out.println(strObject); } if(date instanceof Date) { Date dateObject = (Date)date; System.out.println(dateObject); } if(dog instanceof Animals) { Animals dogObject = (Animals)dog; System.out.println(dogObject.getName()+"的颜色为:"+dogObject.getColor()); } }}class Animals implements java.io.Serializable{ private String name; private String color; private double age;//如果不想序列化 -->private transient double age;(透明) //构造器 public Animals() { } public Animals(String name, String color, double age) { super(); this.name = name; this.color = color; this.age = age; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getColor() { return color; } public void setColor(String color) { this.color = color; } public double getAge() { return age; } public void setAge(double age) { this.age = age; }}
转载地址:http://vgeq.baihongyu.com/