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

目录
相关文章
C4.
|
1月前
|
缓存 Java
Java的Integer对象
Java的Integer对象
C4.
13 0
|
28天前
|
Java
java8中List对象转另一个List对象
java8中List对象转另一个List对象
37 0
|
28天前
|
存储 SQL Java
【Java技术指南】「JPA编程专题」让你不再对JPA技术中的“持久化型注解”感到陌生了(二)
【Java技术指南】「JPA编程专题」让你不再对JPA技术中的“持久化型注解”感到陌生了
44 1
|
2天前
|
设计模式 JavaScript Java
[设计模式Java实现附plantuml源码~行为型] 对象状态及其转换——状态模式
[设计模式Java实现附plantuml源码~行为型] 对象状态及其转换——状态模式
|
4天前
|
Java
Java基础之对象的引用
Java基础之对象的引用
5 0
|
8天前
|
Java
Java中如何克隆一个对象?
【4月更文挑战第13天】
15 0
|
9天前
|
Java API 数据库
深入解析:使用JPA进行Java对象关系映射的实践与应用
【4月更文挑战第17天】Java Persistence API (JPA) 是Java EE中的ORM规范,简化数据库操作,让开发者以面向对象方式处理数据,提高效率和代码可读性。它定义了Java对象与数据库表的映射,通过@Entity等注解标记实体类,如User类映射到users表。JPA提供持久化上下文和EntityManager,管理对象生命周期,支持Criteria API和JPQL进行数据库查询。同时,JPA包含事务管理功能,保证数据一致性。使用JPA能降低开发复杂性,但需根据项目需求灵活应用,结合框架如Spring Data JPA,进一步提升开发便捷性。
|
14天前
|
存储 Java 编译器
对象的交响曲:深入理解Java面向对象的绝妙之处
对象的交响曲:深入理解Java面向对象的绝妙之处
46 0
对象的交响曲:深入理解Java面向对象的绝妙之处
|
18天前
|
存储 Java 数据库连接
java使用mp持久化框架,写入5000个字符,但是VARCHAR(255) 会报错
使用Java的MyBatis Plus框架时,如果尝试将超过VARCHAR(255)限制的字符串(如5000个字符)存入数据库,会抛出异常。解决方法是将列类型改为TEXT。可通过在实体类属性上添加`@TableField(typeHandler = JdbcType.CLOB)`注解,如`private String content;`,将属性映射到CLOB类型列,以存储更长字符串。
9 0
|
19天前
|
Java
在Java中,多态性允许不同类的对象对同一消息做出响应
【4月更文挑战第7天】在Java中,多态性允许不同类的对象对同一消息做出响应
17 2