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

 
在这里开始书写日记、心情 …今天看了看java.beans包,发现了两个好东西,XMLEncoder和XMLDecoder。发现自己以前把从XML存取对象真是太费力气啦。做了小工具类,以后可以用用了。

以下是引用片段:
 

 
  
  1. package com.imct.util;   
  2. import java.beans.XMLDecoder;   
  3. import java.beans.XMLEncoder;   
  4. import java.io.File;   
  5. import java.io.FileInputStream;   
  6. import java.io.FileNotFoundException;   
  7. import java.io.FileOutputStream;   
  8. import java.io.IOException;   
  9. import java.util.ArrayList;   
  10. import java.util.List;   
  11. /**   
  12. * <title>使用XML文件存取可序列化的对象的类</title>   
  13. * <description>提供保存和读取的方法</description>   
  14. * @author 殷晋   
  15. * <copyright>清华大学汽车工程开发研究院@2005</copyright>   
  16. * @version 1.0   
  17. * 2005-8-5 16:44:49   
  18. */   
  19. public class ObjectToXMLUtil   
  20. {   
  21. /**   
  22. * 把java的可序列化的对象(实现Serializable接口)序列化保存到XML文件里面,如果想一次保存多个可序列化对象请用集合进行封装   
  23. * 保存时将会用现在的对象原来的XML文件内容   
  24. * @param obj 要序列化的可序列化的对象   
  25. * @param fileName 带完全的保存路径的文件名   
  26. * @throws FileNotFoundException 指定位置的文件不存在   
  27. * @throws IOException 输出时发生异常   
  28. * @throws Exception 其他运行时异常   
  29. */   
  30. public static void objectXmlEncoder(Object obj,String fileName)   
  31. throws FileNotFoundException,IOException,Exception   
  32. {   
  33. //创建输出文件   
  34. File fo = new File(fileName);   
  35. //文件不存在,就创建该文件   
  36. if(!fo.exists())   
  37. {   
  38. //先创建文件的目录   
  39. String path = fileName.substring(0,fileName.lastIndexOf('.'));   
  40. File pFile = new File(path);   
  41. pFile.mkdirs();   
  42. }   
  43. //创建文件输出流   
  44. FileOutputStream fos = new FileOutputStream(fo);   
  45. //创建XML文件对象输出类实例   
  46. XMLEncoder encoder = new XMLEncoder(fos);   
  47. //对象序列化输出到XML文件   
  48. encoder.writeObject(obj);   
  49. encoder.flush();   
  50. //关闭序列化工具   
  51. encoder.close();   
  52. //关闭输出流   
  53. fos.close();   
  54. }   
  55. /**   
  56. * 读取由objSource指定的XML文件中的序列化保存的对象,返回的结果经过了List封装   
  57. * @param objSource 带全部文件路径的文件全名   
  58. * @return 由XML文件里面保存的对象构成的List列表(可能是一个或者多个的序列化保存的对象)   
  59. * @throws FileNotFoundException 指定的对象读取资源不存在   
  60. * @throws IOException 读取发生错误   
  61. * @throws Exception 其他运行时异常发生   
  62. */   
  63. public static List objectXmlDecoder(String objSource)   
  64. throws FileNotFoundException,IOException,Exception   
  65. {   
  66. List objList = new ArrayList();   
  67. File fin = new File(objSource);   
  68. FileInputStream fis = new FileInputStream(fin);   
  69. XMLDecoder decoder = new XMLDecoder(fis);   
  70. Object obj = null;   
  71. try   
  72. {   
  73. while( (obj = decoder.readObject()) != null)   
  74. {   
  75. objList.add(obj);   
  76. }   
  77. }   
  78. catch (Exception e)   
  79. {   
  80. // TODO Auto-generated catch block   
  81. }   
  82. fis.close();   
  83. decoder.close();   
  84. return objList;   
  85. }  
  86. }  
  87. }