首页 | IT新闻 | 硬件 | 操作系统 | 开发 | 网络编程 | 数据库 | 热门框架 | 网络安全 | 组网 | 建站指南 | 网页制作 | 特效 | 实用技巧 | 服务器 | 办公 | QQ | 探索 | 社区

  • 技术部落
  • 部落首页 > 程序开发 > JAVA专栏 > 正文
  • JAVA对象序列化保存为XML文件的工具类
      2007-4-26  来源:网络资源  编辑:Jsbulo  热度:

    今天看了看java.beans包,发现了两个好东西,XMLEncoder和XMLDecoder。发现自己以前把从XML存取对象真是太费力气啦。做了小工具类,以后可以用用了。

    以下是引用片段:
    package com.imct.util;
    import java.beans.XMLDecoder;
    import java.beans.XMLEncoder;
    import java.io.File;
    import java.io.FileInputStream;
    import java.io.FileNotFoundException;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.ArrayList;
    import java.util.List;
    /**
     * <title>使用XML文件存取可序列化的对象的类</title>
     * <description>提供保存和读取的方法</description>
     * @author 殷晋
     * <copyright>清华大学汽车工程开发研究院@2005</copyright>
     * @version 1.0
     * 2005-8-5 16:44:49
     */
    public class ObjectToXMLUtil
    {
     /**
      * 把java的可序列化的对象(实现Serializable接口)序列化保存到XML文件里面,如果想一次保存多个可序列化对象请用集合进行封装
      * 保存时将会用现在的对象原来的XML文件内容
      * @param obj 要序列化的可序列化的对象
      * @param fileName 带完全的保存路径的文件名 
      * @throws FileNotFoundException 指定位置的文件不存在
      * @throws IOException 输出时发生异常
      * @throws Exception 其他运行时异常
      */
     public static void objectXmlEncoder(Object obj,String fileName)
      throws FileNotFoundException,IOException,Exception
     {  
      //创建输出文件
      File fo = new File(fileName);
      //文件不存在,就创建该文件
      if(!fo.exists())
      {
       //先创建文件的目录
          String path = fileName.substring(0,fileName.lastIndexOf(’.’));
          File pFile = new File(path);
          pFile.mkdirs();         
      }
      //创建文件输出流
      FileOutputStream fos = new FileOutputStream(fo);
      //创建XML文件对象输出类实例
      XMLEncoder encoder = new XMLEncoder(fos);  
      //对象序列化输出到XML文件
      encoder.writeObject(obj);
      encoder.flush(); 
      //关闭序列化工具
      encoder.close();
      //关闭输出流
      fos.close();    
     } 
     /**
      * 读取由objSource指定的XML文件中的序列化保存的对象,返回的结果经过了List封装
      * @param objSource 带全部文件路径的文件全名
      * @return 由XML文件里面保存的对象构成的List列表(可能是一个或者多个的序列化保存的对象)  
      * @throws FileNotFoundException 指定的对象读取资源不存在
      * @throws IOException 读取发生错误
      * @throws Exception 其他运行时异常发生
      */
     public static List objectXmlDecoder(String objSource) 
      throws FileNotFoundException,IOException,Exception
     {
      List objList = new ArrayList();    
      File fin = new File(objSource);
      FileInputStream fis = new FileInputStream(fin);
      XMLDecoder decoder = new XMLDecoder(fis);
      Object obj = null;
      try
      {
       while( (obj = decoder.readObject()) != null)
       {
        objList.add(obj);
       }
      }
      catch (Exception e)
      {
       // TODO Auto-generated catch block    
      }
      fis.close();
      decoder.close();     
      return objList;
     }
    }