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

文章作者 100test 发表时间 2007:09:06 11:51:19
来源 100Test.Com百考试题网


  今天看了看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.
/**
* 使用XML文件存取可序列化的对象的类
* 提供保存和读取的方法
* @author 殷晋
* 清华大学汽车工程开发研究院@2005
* @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.
}
}



相关文章


用Javascript评估用户输入密码的强度
J2ME小Tip:setClip方法的使用详解
使用Admi cripts脚本创建虚拟目录
JAVA对象序列化保存为XML文件的工具类
教你轻松应对J 连接MySQL数据库问题
Java程序最容易犯的21种错误实例分析
澳大利亚华人论坛
考好网
日本华人论坛
华人移民留学论坛
英国华人论坛