import java.io.EOFException;
import java.io.Externalizable;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInput;
import java.io.ObjectInputStream;
import java.io.ObjectOutput;
import java.io.ObjectOutputStream;
/**
*
* Externalizable接口继承于Serializable,并有writeExternal()和readExternal()方法.
* 这两个方法在序列化和反序列化时被调用.
* Externalizable接口的子类在反序列化时需要调用默认构造,因此其子类构造的权限必须为public.
*
*/
public class ExternalizeDemo {
public static void main(String[] args) {
Ext1 e1 = new Ext1();
Ext2 e2 = new Ext2(5);
String filePath = "d:\\e.txt";
try{
serialize(filePath, e1, e2);
deserialize(filePath);
}catch(Exception e){
e.printStackTrace();
}
}
//序列化
static void serialize(Object obj, String filePath) throws Exception{
FileOutputStream file = new FileOutputStream(filePath);
ObjectOutputStream out = new ObjectOutputStream(file);
out.writeObject(obj);
out.close();
System.out.println("serialize end.");
}
//序列化
static void serialize(String filePath, Object... objs ) throws Exception{
FileOutputStream file = new FileOutputStream(filePath);
ObjectOutputStream out = new ObjectOutputStream(file);
for(Object obj : objs){
out.writeObject(obj);
}
out.close();
System.out.println("serialize end.");
}
//反序列化
static void deserialize(String filePath) throws Exception{
FileInputStream file = new FileInputStream(filePath);
ObjectInputStream in = new ObjectInputStream(file);
Object obj = null;
try {
while((obj=in.readObject()) != null){
System.out.println(obj.toString());
}
} catch (EOFException e) {
//
}
in.close();
}
static class Ext1 implements Externalizable {
//public构造
public Ext1() {
System.out.println("Ext1...");
}
public void writeExternal(ObjectOutput out) throws IOException {
System.out.println("writeExternal...");
}
public void readExternal(ObjectInput in) throws IOException,
ClassNotFoundException {
System.out.println("readExternal...");
}
}
static class Ext2 implements Externalizable {
private int i;
public Ext2() {
System.out.println("Ext2...");
}
public Ext2(int i){
System.out.println("Ext2(int i)...");
this.i = i;
}
public void writeExternal(ObjectOutput out) throws IOException {
System.out.println("writeExternal2...");
out.writeInt(i);//如果不这样做,反序列化后得到的是0,而不是序列化时的值
}
public void readExternal(ObjectInput in) throws IOException,
ClassNotFoundException {
System.out.println("readExternal2...");
i = in.readInt();//如果不这样做,反序列化后得到的是0,而不是序列化时的值
}
public String toString(){
return Integer.toString(i);
}
}
}
/*
Ext1...
Ext2(int i)...
writeExternal...
writeExternal2...
serialize end.
Ext1...
readExternal...
com.mycom.serial.ExternalizeDemo$Ext1@173a10f
Ext2...
readExternal2...
5
*/
分享到:
相关推荐
Odin - Inspector and Serialize游戏对象序列化插件.rar
android(包括java)序列化一个对象传给php去做处理,或是接到php...//将一个对象序列化后返回byte[] String phpserialstr=new String(b); 将变量phpserialstr传给php即可. PHPSerializer中还有unserialize方法,是反序列化
对象序列化是Java编程中的必备武器 Java高级程序设计实战教程第五章-Java序列化机制全文共15页,当前为第4页。 5.2.2 序列化应用 当你想把内存中的对象状态保存到一个文件中或者数据库中时候; 当你想用套接字在...
将java数据 序列化成PHP的格式 a:4:{s:6:"title2";s:13:"这是标题2";s:6:"title3";s:13:"这是标题3";s:5:"title";s:13:"这是标题1";s:6:"title4";s:13:"这是标题4";} 或者a:1:{i:0;a:1:{s:4:"name";s:10:"这是1321";...
实现利用serialize()函数序列化文档和鼠标画一些简单的图形的功能.
讲述了C++对象如何序列化(存储到硬盘), 涉及到比较详细的细节方面的讲解。英文。
详解Python 序列化Serialize 和 反序列化Deserialize 序列化 (serialization) 序列化是将对象状态转换为可保持或传输的格式的过程。与序列化相对的是反序列化, 它将流转换为对象。这两个过程结合起来,可以轻松地...
Serialize Deserialize .net c# 序列化 反序列化
addison-common-cached jedis操作,支持读写分离,支持HessianSerialize、Hessian2Serialize、JavaSerialize等序列化。
对象序列化成XML格式数据的示例代码,详细可以查看博客:http://www.cnblogs.com/plokmju/p/android_XmlSerializer.html
PHP序列化(serialize)格式详解,呵呵~
和好友一起总结了C#的四种对象序列化方法(DataContractSerializer、XmlSerializer、BinaryFormatter、SoapFormatter),其中有DataContractSerializer和XmlSerializer不需要在对象上标注[Serializable],...
/// 序列化模型对象为Json /// /// 模型类型 /// 模型对象 /// <returns></returns> public static string GetJson(T model) where T : new() { return new JavaScriptSerializer().Serialize(model); } ...
使用XStream序列化/反序列化对象
这个文档讲了c++中多个对象序列化和持久化的结构和访问形式。英文。结合上一次所上传的文档,讲解的都是对象序列化和持久化的。
免分,C#的派生类的XML序列化,同节点名称,不同派生类内容实现的XML序列化
在保存个人简例等操作中,常需要把相关数据以对象的形式序列化,需要的时候再反序列化,这个例子展示了相关操作
TIA博途_序列化指令Serialize的具体使用方法示例
序列化(Serialize)是将对象转换成字节流,...一、将对象序列化为Json格式字符串 首先是正常的序列化操作,对于给定的类: private class MyClass { public int MyNum; public string MyStr; } 将该类的实例序列化
在PHP中,serialize和json两种方式对一个对象或数组进行序列化或反序列化有什么区别呢? 假设一个对象和一个数组: $web = new stdClass; $web->site = 'tantengvip'; $web->owner = 'tuntun'; $web->age = 5; //和 ...