![[javaSE] IO流(对象序列化),第1张 [javaSE] IO流(对象序列化),第1张](/aiimages/%5BjavaSE%5D+IO%E6%B5%81%EF%BC%88%E5%AF%B9%E8%B1%A1%E5%BA%8F%E5%88%97%E5%8C%96%EF%BC%89.png)
写入
获取ObjectOutputStream对象,new出来,构造参数:fileOutputStream对象目标文件
调用ObjectOutputStream对象的writeObject()方法,参数:要保存的对象
调用ObjectOutputStream对象的close()方法,关闭流
此时会报异常,NotSerialzeableException,是因为目标类没有实现Serializable接口,这个接口没有方法,称为标记接口,会在改变类之后,生成新的序列号,保存的文件读取时会显示错误信息InvalIDClassException
读取
获取ObjectinputStream对象,new出来,构造参数:fileinputStream对象目标文件
调用ObjectinputStream对象的readobject()方法,得到保存的数据
import java.io.fileinputStream; java.io.fileNotFoundException; java.io.fileOutputStream; java.io.IOException; java.io.ObjectinputStream; java.io.ObjectOutputStream; java.io.Serializable;public class ObjectStreamDemo { /** * @param args * @throws Exception */ static voID main(String[] args) throws Exception { writeObj(); readobj(); } * 保存对象 * IOException * fileNotFoundException voID writeObj() Exception{ ObjectOutputStream oos=new ObjectOutputStream(new fileOutputStream("person.object")); oos.writeObject(new Person("taoshihan",100)); } voID readobj() 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, age) { this.name=name; this.age=age; } @OverrIDe public String toString() { Todo auto-generated method stub return name+":"+age; }}
PHP版:
<?PHP Person{ private $name; $agefunction __construct($name,){ $this->name=; $this->age=; } function toString(){ return $this->name.":".$this->age; }}$personObj=serialize());echo $personObj; 输出 O:6:"Person":2:{s:12:"Personname";s:9:"taoshihan";s:11:"Personage";i:100;}$obj=unserialize($personObj);$obj->toString();输出 taoshihan:100
总结
以上是内存溢出为你收集整理的[javaSE] IO流(对象序列化)全部内容,希望文章能够帮你解决[javaSE] IO流(对象序列化)所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)