JAVA对象持久化

简介:

持久化就是将内存中的数据保存起来,使之可以长期存在。在JAVA中,我们可以把JAVA对象直接保存在文件中,在需要使用的时候,直接从文件中读取,这也是对象持久化的一种方式,在这一篇博客中,将演示两种将JAVA对象持久化到文件的方法,直接上代码:

import java.beans.XMLDecoder;
import java.beans.XMLEncoder;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.io.OutputStream;

/**
 * JAVA对象持久化
 * 
 * @author jianggujin
 * 
 */
public class JavaSerializable
{
   /**
    * 持久化为XML对象
    * 
    * @param obj
    * @param out
    */
   public void storeXML(Object obj, OutputStream out)
   {
      XMLEncoder encoder = new XMLEncoder(out);
      encoder.writeObject(obj);
      encoder.flush();
      encoder.close();
   }

   /**
    * 从XML中加载对象
    * 
    * @param in
    * @return
    */
   public Object loadXML(InputStream in)
   {
      XMLDecoder decoder = new XMLDecoder(in);
      Object obj = decoder.readObject();
      decoder.close();
      return obj;
   }

   /**
    * 持久化对象
    * 
    * @param obj
    * @param out
    * @throws IOException
    */
   public void store(Object obj, OutputStream out) throws IOException
   {
      ObjectOutputStream outputStream = new ObjectOutputStream(out);
      outputStream.writeObject(obj);
      outputStream.flush();
      outputStream.close();
   }

   /**
    * 加载对象
    * 
    * @param in
    * @return
    * @throws IOException
    * @throws ClassNotFoundException
    */
   public Object load(InputStream in) throws IOException,
         ClassNotFoundException
   {
      ObjectInputStream inputStream = new ObjectInputStream(in);
      Object obj = inputStream.readObject();
      inputStream.close();
      return obj;
   }

   public static void main(String[] args) throws Exception
   {
      String storeName = "java object";
      File xmlFile = new File("xmlFile.dat");
      JavaSerializable serializable = new JavaSerializable();
      serializable.storeXML(storeName, new FileOutputStream(xmlFile));
      System.out.println(serializable.loadXML(new FileInputStream(xmlFile)));
      File file = new File("file.dat");
      serializable.store(storeName, new FileOutputStream(file));
      System.out.println(serializable.load(new FileInputStream(file)));
   }
}

运行结果:
java object
java object

我们可以打开示例中生成的两个文件:
xmlFile.dat
<?xml version="1.0" encoding="UTF-8"?>
<java version="1.6.0_45" class="java.beans.XMLDecoder">
<string>java object</string>
</java>

file.dat

目录
相关文章
|
6天前
|
SQL Java 数据库连接
15:MyBatis对象关系与映射结构-Java Spring
15:MyBatis对象关系与映射结构-Java Spring
27 4
|
8天前
|
Java 编译器
【Java探索之旅】解密构造方法 对象初始化的关键一步
【Java探索之旅】解密构造方法 对象初始化的关键一步
15 1
|
9天前
|
Java
Java对象和类研究
Java对象和类研究
8 0
|
10天前
|
机器学习/深度学习 人工智能 算法
java对象的比较
java对象的比较
20 0
java对象的比较
|
10天前
|
Java
Java学习——类与对象(二)
Java学习——类与对象(二)
|
10天前
|
存储 Java
Java对象是一种复杂的数据结构
【4月更文挑战第28天】Java对象是基于类的实例,包含属性和方法。类是对象的蓝图,实例化过程在堆内存中分配空间。对象属性存储各种数据,通过点号运算符访问,方法执行操作。Java提供内置对象如String、Integer,也可自定义对象以实现特定功能,如学生管理系统或电商网站。
8 1
|
10天前
|
Java C++
Java学习——类与对象(一)
Java学习——类与对象(一)
|
11天前
|
安全 Java
【JAVA面试题】什么是对象锁?什么是类锁?
【JAVA面试题】什么是对象锁?什么是类锁?
|
14天前
|
设计模式 JavaScript Java
[设计模式Java实现附plantuml源码~行为型] 对象状态及其转换——状态模式
[设计模式Java实现附plantuml源码~行为型] 对象状态及其转换——状态模式
|
14天前
|
设计模式 存储 Java
[设计模式Java实现附plantuml源码~结构型]实现对象的复用——享元模式
[设计模式Java实现附plantuml源码~结构型]实现对象的复用——享元模式