java对象序列化和反序列化,java对象序列化
分享于 点击 30908 次 点评:151
java对象序列化和反序列化,java对象序列化
如果你需要把对象的字节序列永久地保存到硬盘上,通常存放在一个文件中。如果你需要在网络上传送java对象的字节序列。
那么你就需要用到java序列化。
java序列化的本质:就是把对java对象转换为字节序列的过程。
java反序列化的本质:把字节序列恢复为java对象的过程。
接下来用一个例子把一个java对象存成文件然后转换成java对象并且把对象里面的内容答印到控制台上来。
实体类
这个类需要实现Serializable接口否则无法序列化!!!
/*
* 实现可序列化接口
*/
public class Student implements Serializable{
private static final long serialVersionUID = 1L;
private String name; //名字
private int year; //年龄
private String city; //城市
private Date birth; //生日
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public int getYear() {
return year;
}
public void setYear(int year) {
this.year = year;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public Date getBirth() {
return birth;
}
public void setBirth(Date birth) {
this.birth = birth;
}
/*
* (non-Javadoc)
* @see java.lang.Object#toString()
* 重写toString,不然序列化之后显示的是内存地址
*/
@Override
public String toString(){
return this.name+" "+this.year+" "+this.city+" "+this.birth.toString();
}
}
对象写入写出工具类
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
public class FileHelper {
private String fileName;
public FileHelper() {
}
public FileHelper(String fileName) {
this.fileName = fileName;
}
/*
* 将person对象保存到文件中 params: p:person类对象
*/
public void saveObjToFile(Student p) {
try {
// 写对象流的对象
ObjectOutputStream oos = new ObjectOutputStream(new FileOutputStream(fileName));
oos.writeObject(p); // 将Person对象p写入到oos中
oos.close(); // 关闭文件流
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
/*
* 从文件中读出对象,并且返回Person对象
*/
public Student getObjFromFile() {
try {
ObjectInputStream ois = new ObjectInputStream(new FileInputStream(
fileName));
Student person = (Student) ois.readObject(); // 读出对象
return person; // 返回对象
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (ClassNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
return null;
}
}
TEST类
public class TEST {
public static void main(String[] args){
FileHelper fh=new FileHelper("E:\\student.txt");
Student p=new Student();
p.setName("小沈阳");
p.setYear(11);
p.setCity("沈阳");
p.setBirth(new Date(80,2,16));
fh.saveObjToFile(p); //存入person对象
Student person=fh.getObjFromFile(); //取出person对象
System.out.println(person.toString());
}
}
运行结果
存成的文件
打开文件的内容
相关文章
- 暂无相关文章
用户点评