1. import java.io.ByteArrayInputStream;
  2. import java.io.ByteArrayOutputStream;
  3. import java.io.IOException;
  4. import java.io.ObjectInputStream;
  5. import java.io.ObjectOutputStream;
  6. import java.io.Serializable;
  7.  
  8. @SuppressWarnings("restriction")
  9. public class Base64 {
  10. /**
  11. * str 编码为base64
  12. *
  13. * @param String s
  14. * @return String base64
  15. * */
  16. public static String getBase64(String s) {
  17. if (s == null)
  18. return null;
  19. return (new sun.misc.BASE64Encoder()).encode(s.getBytes());
  20. }
  21.  
  22. /**
  23. * byte[] 编码为base64
  24. *
  25. * @param byte[] ba
  26. * @return String base64
  27. * */
  28. public static String getBase64(byte[] ba) {
  29. if (ba == null)
  30. return null;
  31. return (new sun.misc.BASE64Encoder()).encode(ba);
  32. }
  33.  
  34. /**
  35. * base64 解码为 byte[]
  36. *
  37. * @param String base64
  38. * @return byte[]
  39. * @throws IOException
  40. * */
  41. public static byte[] base64ToByteArray(String base64) throws IOException {
  42. if (base64 == null)
  43. return null;
  44. return (new sun.misc.BASE64Decoder()).decodeBuffer(base64);
  45. }
  46.  
  47. /**
  48. * 将base64 字符串反序列化为指定的类
  49. *
  50. * @param base64 序列化后用Base64编码的字符串
  51. * @param serializedClass 序列化对象的class
  52. *
  53. * @return typed object, can be null.
  54. * */
  55. @SuppressWarnings("unchecked")
  56. public static <T> T deFromBase64(String base64, Class<T> serializedClass) {
  57. Object o = null;
  58. byte[] ba = null;
  59. ByteArrayInputStream bai = null;
  60. ObjectInputStream oi = null;
  61. try {
  62. ba = Base64.base64ToByteArray(base64);
  63. bai = new ByteArrayInputStream(ba);
  64. oi = new ObjectInputStream(bai);
  65. o = oi.readObject();
  66. } catch (IOException e) {
  67. System.out.println("反序列化失败!");
  68. e.printStackTrace();
  69. } catch (ClassNotFoundException e) {
  70. System.out.println("类未找到!");
  71. e.printStackTrace();
  72. } finally {
  73. try {
  74. if (oi != null) {
  75. oi.close();
  76. }
  77. if (bai != null) {
  78. bai.close();
  79. }
  80. } catch (IOException e) {
  81. System.out.println("关闭流异常!");
  82. e.printStackTrace();
  83. }
  84. }
  85. return o == null ? null : (T) o;
  86. }
  87.  
  88. /**
  89. * 将对象序列化为Base64 字符串
  90. *
  91. * @param obj 实现了可序列化接口的对象
  92. * @return String 对象序列化为字符串后编码为Base64
  93. * */
  94. public static String se2base64(Serializable obj) {
  95. byte[] ba = null;
  96. ByteArrayOutputStream baos = null;
  97. ObjectOutputStream oos = null;
  98. try {
  99. baos = new ByteArrayOutputStream();
  100. oos = new ObjectOutputStream(baos);
  101. oos.writeObject(obj);
  102. ba = baos.toByteArray();
  103. } catch (IOException e) {
  104. System.out.println("序列化失败!");
  105. } finally {
  106. try {
  107. if (baos != null) {
  108. baos.close();
  109. }
  110. if (oos != null) {
  111. oos.close();
  112. }
  113. } catch (IOException e) {
  114. e.printStackTrace();
  115. }
  116. }
  117. return ba == null ? null : Base64.getBase64(ba);
  118. }
  119. }

Base64.java 工具类的更多相关文章

  1. java工具类系列 (四.SerializationUtils)

    java工具类系列 (四.SerializationUtils) SerializationUtils该类为序列化工具类,也是lang包下的工具,主要用于序列化操作 import java.io.Se ...

  2. Java工具类——通过配置XML验证Map

    Java工具类--通过配置XML验证Map 背景 在JavaWeb项目中,接收前端过来的参数时通常是使用我们的实体类进行接收的.但是呢,我们不能去决定已经搭建好的框架是怎么样的,在我接触的框架中有一种 ...

  3. 排名前 16 的 Java 工具类

    在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目源码. 一. ...

  4. 排名前16的Java工具类

    原文:https://www.jianshu.com/p/9e937d178203 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法 ...

  5. 第一章 Java工具类目录

    在这一系列博客中,主要是记录在实际开发中会常用的一些Java工具类,方便后续开发中使用. 以下的目录会随着后边具体工具类的添加而改变. 浮点数精确计算 第二章 Java浮点数精确计算 crc32将任意 ...

  6. java工具类之按对象中某属性排序

    import java.lang.reflect.Field; import java.lang.reflect.InvocationTargetException; import java.lang ...

  7. 干货:排名前16的Java工具类

    在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目源码. 一. ...

  8. Java工具类:给程序增加版权信息

       我们九天鸟的p2p网贷系统,基本算是开发完成了.   现在,想给后端的Java代码,增加版权信息.   手动去copy-paste,太没有技术含量. 于是,写了个Java工具类,给Java源文件 ...

  9. 常用高效 Java 工具类总结

    一.前言 在Java中,工具类定义了一组公共方法,这篇文章将介绍Java中使用最频繁及最通用的Java工具类.以下工具类.方法按使用流行度排名,参考数据来源于Github上随机选取的5万个开源项目源码 ...

随机推荐

  1. 1156. Two Rounds(dfs+背包)

    1156 求出每个联通块的黑白块数 然后再背包 二维的背包 要保证每个块都得取一个 写的有些乱.. #include <iostream> #include<cstdio> # ...

  2. 【Todo】JS跨域访问问题的解决

    做双十一,需要在主会场页面,嵌入我们产品的JS豆腐块.而这个豆腐块需要调用我们后端的数据接口,涉及跨域访问. 参考 http://www.cnblogs.com/2050/p/3191744.html ...

  3. 如何使用UIAutomation进行iOS 自动化测试(Part I)

    转自:http://www.cnblogs.com/vowei/archive/2012/08/10/2631949.html 写在前面 研究iOS的自动化测试也有些日子了,刚开始的时候,一直苦于找不 ...

  4. hdu 1559 最大子矩阵 (简单dp)

    题目:http://acm.hdu.edu.cn/showproblem.php?pid=1559 #include <cstring> #include <cstdlib> ...

  5. log4j配置webapp日志系统

    1.基础知识: Log4j的中文文档 (这是根据最新的log4j(jakarta-log4j-1.2.8)的开发包自带文档的manual翻译的) http://dev.csdn.net/develop ...

  6. 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 ...

  7. Android Configuration change引发的问题及解决方法(转)

    之前在学习Fragment和总结Android异步操作的时候会在很多blog中看到对Configuration Change的讨论,以前做的项目都是固定竖屏的,所以对横竖屏切换以及横竖屏切换对程序有什 ...

  8. 函数与关系实例,函数运算与SQL,试验与关系元组

    函数是一个集合,它的每个元素都是二元组或多元组.例如 f = { (x, y) | x∈R & y∈R & y = 2x } ,g = { (x, y, z) | (x, y, z)∈ ...

  9. IT经理,你在这个位置吗

    事实上我离这个位置还远着,或者说它可能并不是我以后的方向,但是作为一个码农,这个发展路线还是需要了解的.主要的还是喜欢下面这个图,因为里面我的发展方向,有我的目标. 对 于一个IT从业者,让你谋得工作 ...

  10. Filezilla中文字符文件看不到或显示乱码的解决办法

    Filezilla确实是跨平台的好软件,可之前我就在ubuntu下郁闷为什么看坛子FTP里竟然是空的.最近换MAC版的FZ结果还是这样就奇怪了. 后来想Filezilla应该是支持字符集转换的,所以在 ...