写入

获取ObjectOutputStream对象,new出来,构造参数:FileOutputStream对象目标文件

调用ObjectOutputStream对象的writeObject()方法,参数:要保存的对象

调用ObjectOutputStream对象的close()方法,关闭流

此时会报异常,NotSerialzeableException,是因为目标类没有实现Serializable接口,这个接口没有方法,称为标记接口,会在改变类之后,生成新的序列号,保存的文件读取时会显示错误信息InvalidClassException

读取

获取ObjectInputStream对象,new出来,构造参数:FileInputStream对象目标文件

调用ObjectInputStream对象的readObject()方法,得到保存的数据

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable; public class ObjectStreamDemo { /**
* @param args
* @throws Exception
*/
public static void main(String[] args) throws Exception {
writeObj();
readObj();
}
/**
* 保存对象
* @throws IOException
* @throws FileNotFoundException
*/
public static void writeObj() throws Exception{
ObjectOutputStream oos=new ObjectOutputStream(new FileOutputStream("person.object"));
oos.writeObject(new Person("taoshihan",100));
} public static void readObj() throws Exception{
ObjectInputStream ois=new ObjectInputStream(new FileInputStream("person.object"));
Person person=(Person) ois.readObject();
System.out.println(person);//输出 taoshihan:100
}
}
/**
* 自定义的类
* @author taoshihan
*
*/
class Person implements Serializable{
private String name;
private int age;
public Person(String name,int age) {
this.name=name;
this.age=age;
}
@Override
public String toString() {
// TODO Auto-generated method stub
return name+":"+age;
}
}

PHP版:

<?php
class Person{
private $name;
private $age;
public function __construct($name,$age){
$this->name=$name;
$this->age=$age;
}
public function toString(){
return $this->name.":".$this->age;
}
} $personObj=serialize(new Person("taoshihan",100));
echo $personObj;// 输出 O:6:"Person":2:{s:12:"Personname";s:9:"taoshihan";s:11:"Personage";i:100;}
$obj=unserialize($personObj);
echo $obj->toString();//输出 taoshihan:100

最新文章

  1. git查看本地和创建分支、上传分支、提交代码到分支、删除分支等,git分支、git查看本地和创建分支以及上传分支到服务器
  2. Struts中文件上传的一些规则...
  3. Java并发编程:Thread类的使用
  4. 关于arcgis engine的注记显示与关闭问题
  5. Android布局优化策略
  6. IO - 同步,异步,阻塞,非阻塞 (转)
  7. cmd运行java,含传参,引用jar
  8. 动态规划+滚动数组 -- POJ 1159 Palindrome
  9. 【Linux操作系统分析】设备驱动处理流程
  10. hdu_3062_Party(2-SAT)
  11. grid表格选择模式
  12. pdflush的工作原理
  13. 关于mybatis更新数据的问题
  14. Git 教程(二):提交和回退
  15. 学习笔记DL002:AI、机器学习、表示学习、深度学习,第一次大衰退
  16. JMeter接口压测——ServerAgent监控服务端性能指标
  17. Java设计模式 - 单例模式详解(下)
  18. Feature Extractor[batch normalization]
  19. web监控,if 语句
  20. 基于pycaffe的网络训练和结果分析(mnist数据集)

热门文章

  1. WebService-php- 2(17)
  2. Problem H: 小姐姐的QQ号(DFS)
  3. kali linux之msf后渗透阶段
  4. docker设置引用国内镜像加速
  5. 【vim】插入模式与常用编辑操作
  6. 几种封装javaBean的方法
  7. iOS9下UICollectionViewCell的awakeFromNib问题
  8. i2c_smbs 函数
  9. 问题 I: 闪闪发光
  10. RocketMQ消息发送的队列选择与容错策略