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);
- }
- }
Base64.java 工具类的更多相关文章
- java工具类系列 (四.SerializationUtils)
java工具类系列 (四.SerializationUtils) SerializationUtils该类为序列化工具类,也是lang包下的工具,主要用于序列化操作 import java.io.Se ...
- Java工具类——通过配置XML验证Map
Java工具类--通过配置XML验证Map 背景 在JavaWeb项目中,接收前端过来的参数时通常是使用我们的实体类进行接收的.但是呢,我们不能去决定已经搭建好的框架是怎么样的,在我接触的框架中有一种 ...
- 排名前 16 的 Java 工具类
在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目源码. 一. ...
- 排名前16的Java工具类
原文:https://www.jianshu.com/p/9e937d178203 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法 ...
- 第一章 Java工具类目录
在这一系列博客中,主要是记录在实际开发中会常用的一些Java工具类,方便后续开发中使用. 以下的目录会随着后边具体工具类的添加而改变. 浮点数精确计算 第二章 Java浮点数精确计算 crc32将任意 ...
- java工具类之按对象中某属性排序
import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang ...
- 干货:排名前16的Java工具类
在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目源码. 一. ...
- Java工具类:给程序增加版权信息
我们九天鸟的p2p网贷系统,基本算是开发完成了. 现在,想给后端的Java代码,增加版权信息. 手动去copy-paste,太没有技术含量. 于是,写了个Java工具类,给Java源文件 ...
- 常用高效 Java 工具类总结
一.前言 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目源码 ...
随机推荐
- 1156. Two Rounds(dfs+背包)
1156 求出每个联通块的黑白块数 然后再背包 二维的背包 要保证每个块都得取一个 写的有些乱.. #include <iostream> #include<cstdio> # ...
- 【Todo】JS跨域访问问题的解决
做双十一,需要在主会场页面,嵌入我们产品的JS豆腐块.而这个豆腐块需要调用我们后端的数据接口,涉及跨域访问. 参考 http://www.cnblogs.com/2050/p/3191744.html ...
- 如何使用UIAutomation进行iOS 自动化测试(Part I)
转自:http://www.cnblogs.com/vowei/archive/2012/08/10/2631949.html 写在前面 研究iOS的自动化测试也有些日子了,刚开始的时候,一直苦于找不 ...
- hdu 1559 最大子矩阵 (简单dp)
题目:http://acm.hdu.edu.cn/showproblem.php?pid=1559 #include <cstring> #include <cstdlib> ...
- log4j配置webapp日志系统
1.基础知识: Log4j的中文文档 (这是根据最新的log4j(jakarta-log4j-1.2.8)的开发包自带文档的manual翻译的) http://dev.csdn.net/develop ...
- UVa 11427 (期望 DP) Expect the Expected
设d(i, j)表示前i局每局获胜的比例均不超过p,且前i局共获胜j局的概率. d(i, j) = d(i-1, j) * (1-p) + d(i-1, j-1) * p 则只玩一天就就不再玩的概率Q ...
- Android Configuration change引发的问题及解决方法(转)
之前在学习Fragment和总结Android异步操作的时候会在很多blog中看到对Configuration Change的讨论,以前做的项目都是固定竖屏的,所以对横竖屏切换以及横竖屏切换对程序有什 ...
- 函数与关系实例,函数运算与SQL,试验与关系元组
函数是一个集合,它的每个元素都是二元组或多元组.例如 f = { (x, y) | x∈R & y∈R & y = 2x } ,g = { (x, y, z) | (x, y, z)∈ ...
- IT经理,你在这个位置吗
事实上我离这个位置还远着,或者说它可能并不是我以后的方向,但是作为一个码农,这个发展路线还是需要了解的.主要的还是喜欢下面这个图,因为里面我的发展方向,有我的目标. 对 于一个IT从业者,让你谋得工作 ...
- Filezilla中文字符文件看不到或显示乱码的解决办法
Filezilla确实是跨平台的好软件,可之前我就在ubuntu下郁闷为什么看坛子FTP里竟然是空的.最近换MAC版的FZ结果还是这样就奇怪了. 后来想Filezilla应该是支持字符集转换的,所以在 ...