代码语言
.
CSharp
.
JS
Java
Asp.Net
C
MSSQL
PHP
Css
PLSQL
Python
Shell
EBS
ASP
Perl
ObjC
VB.Net
VBS
MYSQL
GO
Delphi
AS
DB2
Domino
Rails
ActionScript
Scala
代码分类
文件
系统
字符串
数据库
网络相关
图形/GUI
多媒体
算法
游戏
Jquery
Extjs
Android
HTML5
菜单
网页交互
WinForm
控件
企业应用
安全与加密
脚本/批处理
开放平台
其它
【
Java
】
Serializable 序列化为字符串 base64
作者:
/ 发布于
2019/3/23
/
1063
工具类 Base64.java import java.io.ByteArrayInputStream; import java.io.ByteArrayOutputStream; import java.io.IOException; import java.io.ObjectInputStream; import java.io.ObjectOutputStream; import java.io.Serializable; @SuppressWarnings("restriction") public class Base64 { /** * str 编码为base64 * * @param String s * @return String base64 * */ public static String getBase64(String s) { if (s == null) return null; return (new sun.misc.BASE64Encoder()).encode(s.getBytes()); } /** * byte[] 编码为base64 * * @param byte[] ba * @return String base64 * */ public static String getBase64(byte[] ba) { if (ba == null) return null; return (new sun.misc.BASE64Encoder()).encode(ba); } /** * base64 解码为 byte[] * * @param String base64 * @return byte[] * @throws IOException * */ public static byte[] base64ToByteArray(String base64) throws IOException { if (base64 == null) return null; return (new sun.misc.BASE64Decoder()).decodeBuffer(base64); } /** * 将base64 字符串反序列化为指定的类 * * @param base64 序列化后用Base64编码的字符串 * @param serializedClass 序列化对象的class * * @return typed object, can be null. * */ @SuppressWarnings("unchecked") public static <T> T deFromBase64(String base64, Class<T> serializedClass) { Object o = null; byte[] ba = null; ByteArrayInputStream bai = null; ObjectInputStream oi = null; try { ba = Base64.base64ToByteArray(base64); bai = new ByteArrayInputStream(ba); oi = new ObjectInputStream(bai); o = oi.readObject(); } catch (IOException e) { System.out.println("反序列化失败!"); e.printStackTrace(); } catch (ClassNotFoundException e) { System.out.println("类未找到!"); e.printStackTrace(); } finally { try { if (oi != null) { oi.close(); } if (bai != null) { bai.close(); } } catch (IOException e) { System.out.println("关闭流异常!"); e.printStackTrace(); } } return o == null ? null : (T) o; } /** * 将对象序列化为Base64 字符串 * * @param obj 实现了可序列化接口的对象 * @return String 对象序列化为字符串后编码为Base64 * */ public static String se2base64(Serializable obj) { byte[] ba = null; ByteArrayOutputStream baos = null; ObjectOutputStream oos = null; try { baos = new ByteArrayOutputStream(); oos = new ObjectOutputStream(baos); oos.writeObject(obj); ba = baos.toByteArray(); } catch (IOException e) { System.out.println("序列化失败!"); } finally { try { if (baos != null) { baos.close(); } if (oos != null) { oos.close(); } } catch (IOException e) { e.printStackTrace(); } } return ba == null ? null : Base64.getBase64(ba); } } 测试: import java.io.Serializable; public class Test { public static void main(String[] args) { Person person = new Person(); person.setName("Xiaoming"); person.setAge(11); String s = Base64.se2base64(person); Person xiaoming = Base64.deFromBase64(s, Person.class); System.out.println(xiaoming.toString()); } } class Person implements Serializable { private static final long serialVersionUID = 1L; private String name; private int age; public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } @Override public String toString() { return "Person [name=" + name + ", age=" + age + "]"; } }
试试其它关键字
同语言下
.
List 切割成几份 工具类
.
一行一行读取txt的内容
.
Java PDF转换成图片并输出给前台展示
.
java 多线程框架
.
double类型如果小数点后为零则显示整数否则保留两位小
.
将图片转换为Base64字符串公共类抽取
.
sqlParser 处理SQL(增删改查) 替换schema 用于多租户
.
JAVA 月份中的第几周处理 1-7属于第一周 依次类推 29-
.
java计算两个经纬度之间的距离
.
输入时间参数计算年龄
可能有用的
.
List 切割成几份 工具类
.
一行一行读取txt的内容
.
Java PDF转换成图片并输出给前台展示
.
java 多线程框架
.
double类型如果小数点后为零则显示整数否则保留两位小
.
将图片转换为Base64字符串公共类抽取
.
sqlParser 处理SQL(增删改查) 替换schema 用于多租户
.
JAVA 月份中的第几周处理 1-7属于第一周 依次类推 29-
.
java计算两个经纬度之间的距离
.
输入时间参数计算年龄
贡献的其它代码
Label
Copyright © 2004 - 2024 dezai.cn. All Rights Reserved
站长博客
粤ICP备13059550号-3