
Java 对象流
发布日期:2021-05-07 03:00:33
浏览次数:20
分类:精选文章
本文共 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; }}
发表评论
最新留言
感谢大佬
[***.8.128.20]2025年03月25日 22时47分55秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
vimscript学习笔记(二)预备知识
2019-03-05
vimscript学习笔记(三)信息打印
2019-03-05
awk杂谈之数组习题
2019-03-05
Linux网络属性配置详解
2019-03-05
Python(三十)类的理解
2019-03-05
Extjs布局详解
2019-03-05
Android数据库
2019-03-05
HTML基础,块级元素/行内元素/行内块元素辨析【2分钟掌握】
2019-03-05
keil左侧文件调整方法
2019-03-05
本地分支关联远程分支
2019-03-05
STM8 GPIO模式
2019-03-05
STM32boot启动
2019-03-05
omnet++
2019-03-05
23种设计模式一:单例模式
2019-03-05
Qt中的析构函数
2019-03-05
CSharp中委托(一)委托、匿名函数、lambda表达式、多播委托、窗体传值、泛型委托
2019-03-05
二叉堆的c++模板类实现
2019-03-05
C语言实现dijkstra(adjacence matrix)
2019-03-05
C语言学习从初级到精通的疯狂实战教程-徐新帅-专题视频课程
2019-03-05