首页 > 编程语言 > 详细

java对象---序列化与反序列化

时间:2016-01-21 18:32:33      阅读:189      评论:0      收藏:0      [点我收藏+]

 

private static final String TEMP_ENCODING = "ISO-8859-1";
private static final String DEFAULT_ENCODING = "UTF-8";

/**
* 把java对象序列化成字符串
* @param obj
* @return
* @throws IOException
*/
public static String writeToStr(Object obj) throws IOException {
// 此类实现了一个输出流,其中的数据被写入一个 byte 数组。
// 缓冲区会随着数据的不断写入而自动增长。可使用 toByteArray() 和 toString() 获取数据。
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
// 专用于java对象序列化,将对象进行序列化
ObjectOutputStream objectOutputStream = null;
String serStr = null;
try {
objectOutputStream = new ObjectOutputStream(byteArrayOutputStream);
objectOutputStream.writeObject(obj);
serStr = byteArrayOutputStream.toString(TEMP_ENCODING);
serStr = java.net.URLEncoder.encode(serStr, DEFAULT_ENCODING);
} catch (IOException e) {
e.printStackTrace();
} finally {
objectOutputStream.close();
}
return serStr;
}


/**
* 把字符串反序列化java对象
* @param serStr
* @return
* @throws IOException
*/
public static Object deserializeFromStr(String serStr) throws IOException {
ByteArrayInputStream byteArrayInputStream = null;
ObjectInputStream objectInputStream = null;
try {
String deserStr = java.net.URLDecoder.decode(serStr, DEFAULT_ENCODING);
byteArrayInputStream = new ByteArrayInputStream(deserStr.getBytes(TEMP_ENCODING));
objectInputStream = new ObjectInputStream(byteArrayInputStream);
return objectInputStream.readObject();
} catch (IOException e) {
e.printStackTrace();
} catch (ClassNotFoundException e) {
e.printStackTrace();
} finally {
objectInputStream.close();
byteArrayInputStream.close();
}
return null;
}

java对象---序列化与反序列化

原文:http://www.cnblogs.com/xiaowenwu/p/5148478.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!