龙盟编程博客 | 无障碍搜索 | 云盘搜索神器
快速搜索
主页 > 软件开发 > JAVA开发 >

JAVA对象序列化保存为XML文件的工具类

时间:2009-12-23 15:42来源:未知 作者:admin 点击:
分享到:
今天看了看Java.beans包,发现了两个好东西,XMLEncoder和XMLDecoder。发现自己以前把从XML存取对象真是太费力气啦。做了小工具类,以后可以用用了。 package com.imct.util; import java.beans.XMLDec

今天看了看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()) !
  

精彩图集

赞助商链接