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