序列化,反序列化,不序列化
2015-06-02 10:07
204 查看
序列化:对象-->流数据(ObjectOutputStream)
反序列化:流数据-->对象(ObjectInputStream)
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
/*
* 序列化流:把对象按照流一样的方式存入文本文件或者在网络中传输。对象 -- 流数据(ObjectOutputStream)
* 反序列化流:把文本文件中的流对象数据或者网络中的流对象数据还原成对象。流数据 -- 对象(ObjectInputStream)
*/
public class ObjectStreamDemo {
public static void main(String[] args) throws IOException,
ClassNotFoundException {
// write();
read();
}
private static void read() throws IOException, ClassNotFoundException {
// 创建反序列化对象
ObjectInputStream ois = new ObjectInputStream(new FileInputStream(
"os.txt"));
// 还原对象
Object obj = ois.readObject();
// 释放资源
ois.close();
// 输出对象
System.out.println(obj);
}
private static void write() throws IOException {
// 创建序列化流对象
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(
"oos.txt"));
// 创建对象
Person p = new Person("123", 45);
// public final void writeObject(Object obj)
oos.writeObject(p);
// 释放资源
oos.close();
}
}
序列化类
import java.io.Serializable;
public class Person implements Serializable {
private static final long serialVersionUID = -2071565876962058567L;//使序列化有固定id
private String name;
// private int age;
private transient int age;//<span style="font-family: Arial, Helvetica, sans-serif;">transient关键字不被序列化</span>
// int age;
public Person() {
super();
}
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + "]";
}
}
反序列化:流数据-->对象(ObjectInputStream)
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
/*
* 序列化流:把对象按照流一样的方式存入文本文件或者在网络中传输。对象 -- 流数据(ObjectOutputStream)
* 反序列化流:把文本文件中的流对象数据或者网络中的流对象数据还原成对象。流数据 -- 对象(ObjectInputStream)
*/
public class ObjectStreamDemo {
public static void main(String[] args) throws IOException,
ClassNotFoundException {
// write();
read();
}
private static void read() throws IOException, ClassNotFoundException {
// 创建反序列化对象
ObjectInputStream ois = new ObjectInputStream(new FileInputStream(
"os.txt"));
// 还原对象
Object obj = ois.readObject();
// 释放资源
ois.close();
// 输出对象
System.out.println(obj);
}
private static void write() throws IOException {
// 创建序列化流对象
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(
"oos.txt"));
// 创建对象
Person p = new Person("123", 45);
// public final void writeObject(Object obj)
oos.writeObject(p);
// 释放资源
oos.close();
}
}
序列化类
import java.io.Serializable;
public class Person implements Serializable {
private static final long serialVersionUID = -2071565876962058567L;//使序列化有固定id
private String name;
// private int age;
private transient int age;//<span style="font-family: Arial, Helvetica, sans-serif;">transient关键字不被序列化</span>
// int age;
public Person() {
super();
}
public Person(String name, int age) {
super();
this.name = name;
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
@Override
public String toString() {
return "Person [name=" + name + ", age=" + age + "]";
}
}
相关文章推荐
- netstat -ano
- 简单JS传出参数例子
- Android-微信支付-记录自己遇到的坑- -!
- netlink---Linux下基于socket的内核和上层通信机制(上)
- Java和C++的区别
- JS与iOS之间的通信
- redis之AOF持久化机制
- Reverse Linked List
- visual studio无提示错误发布失败解决方法
- Project Euler:Problem 27 Quadratic primes
- 线程与fork(2) (进程):把它们一起使用前,请谨慎考虑 (翻译)
- CSS3+less实验(1)——gradient
- Android动态加载字节码
- spring MVC配置详解
- bash之条件判断语句及循环语句
- [leecode] Longest Common Prefix
- java webservice 注解
- 20.找出矩阵中最大的数存入数组中
- C/C++捕获段错误,打印出错的具体位置(精确到哪一行)
- 分页管理上增删改查那些事儿