java序列化与反序列化

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 zzbk_c8

 * 

 */

public class ObjectToXMLUtil {

/***************************************************************************

* 序列化方法

* @param obj序列化对象

* @param fileName存放地址

*/

public static void objectXmlEncoder(Object obj, String fileName) {

// 创建文件

File file = new File(fileName);

// 判断文件是否存在,如不存在创建

if (!file.exists()) {

// 先创建文件目录

File filePath = new File(fileName.substring(0, fileName

.lastIndexOf("/")));

filePath.mkdirs();

}

 

try {

// 创建文件的输出流

FileOutputStream out = new FileOutputStream(fileName);

// 创建XML文件对象输出类

XMLEncoder xmlEncoder = new XMLEncoder(out);

// 利用xml对象输出类输出对象到xml文件

xmlEncoder.writeObject(obj);

xmlEncoder.flush();

// 关闭输出对象

xmlEncoder.close();

try {

out.close();

} catch (IOException e) {

// TODO Auto-generated catch block

System.out.println("文件输出流关闭错误");

e.printStackTrace();

}

} catch (FileNotFoundException e) {

// TODO Auto-generated catch block

System.out.println("文件输出流创建失败");

e.printStackTrace();

}

}

 

/***************************************************************************

* 反序列化

* @param objSource

*            xml文件,反序列化内容

* @return 返回集合

*/

public static List objectXmlDecoder(String objSource) {

// 用于接收从xml中凡序列化出来的集合

List objList = new ArrayList();

// 获取xml对象文件资源(反序列化文件)

File filein = new File(objSource);

try {

// 创建从xml文件读取的输入流

FileInputStream fis = new FileInputStream(filein);

// 创建xml解析对象(反序列化对象)并利用参数指定解析内容

XMLDecoder xmlDecoder = new XMLDecoder(fis);

// 从xml解析对象中 凡序列话得到 内存对象(集合)

Object obj = null;

if ((obj = xmlDecoder.readObject()) != null) {

objList.add(obj);

}

fis.close();

xmlDecoder.close();

} catch (Exception e) {

// TODO Auto-generated catch block

System.out.println("输入流异常");

e.printStackTrace();

}

 

return objList;

}

 

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

String str = "aaaaaaaaaaa";

List<String> ls = new ArrayList<String>();

ls.add("aaaaaaa");

ls.add("bbbbbbbbbb");

ls.add("cccccc");

ObjectToXMLUtil.objectXmlEncoder(ls, "d:xml/a.xml");

List list = ObjectToXMLUtil.objectXmlDecoder("d:xml/a.xml");

for (int i = 0; i < list.size(); i++) {

System.out.println(list.get(i));

}

}

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值