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

mac2022-06-30  64

 

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

转载于:https://www.cnblogs.com/xiaowenwu/p/5148478.html

最新回复(0)