什么是序列化:
1.序列化就是将一个对象的状态(各个属性量)保存起来,然后在适当的时候再获得。
序列化分为两大部分:序列化和反序列化。序列化是这个过程的第一部分,将数据分解成字节流,以便存储在文件中或在网络上传
输。反序列化就是打开字节流并重构对象。对象序列化不仅要将基本数据类型转换成字节表示,有时还要恢复数据。恢复数据要求
有恢复数据的对象实例;
2.java对象序列化不仅保留一个对象的数据,而且递归保存对象引用的每个对象的数据。可以将整个对象层次写入字节流中,可以保
存在文件中或在网络连接上传递。利用对象序列化可以进行对象的"深复制",即复制对象本身及引用的对象本身。序列化一个对象
可能得到整个对象序列。
序列化的特点是什么:
如果某个类能够被序列化,其子类也可以被序列化。
(二)序列化前提:
(1)要序列化对象必须是可序列化的,即必须实现 Serializable 接口。
(2)要序列化对象的属性也都是可序列化的。
(3)要序列化对象引用的对象也必须是可序列化的,如:要序列化一个 HashMap 实例,需要把放入到HashMap中的对象也都序列化
。
(4)要序列化一个内部类,该内部类必须可序列化,并且外部类也必须可序列化。
(5)基本数据类型都是可以序列化的。
示例如下:用于将序列化对象存储到文件中,及从文件中对读取对象
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;
public class User implements Serializable {
public String name; // 姓名
public int age; // 年龄
public User(){}
public User(String name, int age) {// 有参构造
this.name = name;
this.age = age;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
/**
* @todo 将一个可以序列化的对象写入文件
* @param obj 要保存的对象
* @param fileName 目标文件
*/
public void writeToFile(Object obj, String fileName) {
try {
FileOutputStream fos = new FileOutputStream(fileName);
ObjectOutputStream oos = new ObjectOutputStream(fos);
oos.writeObject(obj);
oos.flush();
System.out.println("write ok");
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* @param fileName
* 保存对象的文件
* @return 从文件中得到的对象
*/
public Object getObjFromFile(String fileName) {
Object obj = null;
try {
System.out.println("*********"+fileName);
FileInputStream fis = new FileInputStream(fileName);
ObjectInputStream ois = new ObjectInputStream(fis);
obj = ois.readObject();
System.out.println("read ok..");
} catch (Exception e) {
e.printStackTrace();
}
return obj;
}
public static void main(String[] args) {
String fileName = "c:\\user.txt"; // 保存对象的文件
List<User> l = new ArrayList<User>();
for (int i = 0; i < 5; i++) {
User user = new User("中国人民共和国"+(i+1), 28+i);
l.add(user);
}
User user = new User(); // 创建一个User对象
user.writeToFile(l, fileName); // 将对象写入文件
List<User> ul = (List<User>)(user.getObjFromFile(fileName)); // 从文件中取得对象
if (ul != null)
//System.out.println("get user from file ok,and name is : "); // 输出对象名
for (Iterator iter = ul.iterator(); iter.hasNext();) {
User u = (User) iter.next();
System.out.println("......userName.........."+u.getName()+"---------"+u.getAge());
}
}
}
分享到:
相关推荐
java序列化代码示例,详细讲解序列化作用于使用注意规则项!!!
序列化是干什么的? 简单说就是为了保存在内存中的各种对象的状态(也就是实例...虽然你可以用你自己的各种各样的方法来保 存object states,但是Java给你提供一种应该比你自己好的保存对象状态的机制,那就是序列化。
java序列化(Serializable)的作用和反序列化.doc 有详细的讲解哦。 在什么地方用的到都有说明的.
学习Java序列化,里面包含一份PPT以及相应的源码演示
java反序列化工具,覆盖jboss、weblogic、websphere。
java序列化和反序列化java序列化和反序列化java序列化和反序列化
大家请看Java的序列化结构有不足的地方请指教也希望指出不足的地方。
Xson是一个Java对象序列化和反序列化程序。支持Java对象到字节数组的序列化,和从字节数组到Java对象的反序列化。 Maven: <groupId>com.github.xsonorg</groupId> <artifactId>xson-core <version>1.0.1 ...
java 序列化详细解释 很详细 适用于高级软件开发者
java 对象的序列化与反序列化 java 对象的序列化与反序列化
在应用java进行c-s开发的时候,尤其涉及到图片和视频之间的传输时,需要用序列化和反序列化技术,希望对您有帮助
将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";...
Java序列化与反序列化 Java序列化与反序列化 Java序列化与反序列化 Java序列化与反序列化 Java序列化与反序列化
java 常用序列化和反序列化框架使用demo ,java 常用序列化和反序列化框架使用demo
android(包括java)序列化一个对象传给php去做处理,或是接到php的序列化的对象在java中做处理的工具jar包以及使用方法. 使用方法: byte[] b = null; b = PHPSerializer.serialize(一个对象);//将一个对象序列化后返回...
这是Java序列化标准规范,对于研究序列化源码能够提供指导作用,为深入研究Java序列技术奠定基础。
java对象 java序列化 java反序列化
java 序列化,java 序列化,java 序列化,java 序列化,java 序列化,java 序列化
java 的序列化与反序列化举例测试
极好的序列化与发序列化代码。可以处理array集合,数组或者单个对象等的序列化与反序列化。