博客
关于我
Java 对象流
阅读量:321 次
发布时间:2019-03-04

本文共 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/

你可能感兴趣的文章
Elasticsearch下载慢?分享百度云下载-ELK
查看>>
云服务器springboot jar项目开启jmx remote监控-解决无法连接的问题
查看>>
文件上传-FileUpload
查看>>
快速排序
查看>>
Pyinstaller打包的exe文件过大的解决方法
查看>>
Linux的软链接跟Windows快捷方式一样?
查看>>
更改github的默认语言类型
查看>>
使用bigdecima实例化时传int和string时的精度丢失
查看>>
使用第三方sdk,微信wechat扫码登录
查看>>
windows下的netstat命令略解和linux下的netstat命令/awk打印或分割字符串
查看>>
mysql中的行转列
查看>>
flink —— checkpoint机制
查看>>
shell脚本中冒泡排序、直接排序、反转排序
查看>>
WPS及Excel中Alt键的妙用 快捷键
查看>>
C - 食物链 并查集
查看>>
Pycharm 常用快捷键
查看>>
ValueError: check_hostname requires server_hostname
查看>>
基于Altium Designer的电子设计的入门指南
查看>>
基于LabVIEW的入门指南
查看>>
PCB布局系列汇总
查看>>