服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

java对象序列化保存为xml文件的工具类

在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; 
 } 
}

扫描关注微信公众号