今天看了看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;
}
}
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器