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);
    }
}
时间: 2024-08-04 01:05:44

Base64.java 工具类的相关文章

第一章 Java工具类目录

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

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

我们九天鸟的p2p网贷系统,基本算是开发完成了.   现在,想给后端的Java代码,增加版权信息.   手动去copy-paste,太没有技术含量. 于是,写了个Java工具类,给Java源文件增加版权信息.   源代码,开头的注释,就是版权描述.详细实现,就看代码吧.  /*  *Copyright ? 2015 JiuTianNiao  *武汉九天鸟科技有限公司  *http://JiuTianNiao.com  *All rights reserved.  */ package com.j

Java工具类

目录                                                                                             Math Random Date Carlendar DateFormat SimpleDateFoemat Comparator Clone Math                                                                               

java工具类系列 (四.SerializationUtils)

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

java工具类-邮件发送

mail-1.4.jar package com.huawei.it.citools.mail; import java.util.Date;import java.util.List;import java.util.Properties; import javax.mail.Address;import javax.mail.BodyPart;import javax.mail.Message;import javax.mail.MessagingException;import javax

java工具类-读配置文件

///读配置文件 import java.io.InputStream;import java.util.HashMap;import java.util.Map;import java.util.Map.Entry;import java.util.Properties;import java.util.Set;public class PropertiesUtils{ private static Map<String, String> propertiesMap = new HashMa

java工具类-excel jxl

jxl-2.6.9.14.jarimport net.sf.jxls.transformer.XLSTransformer;//jxls-core-1.0.2.jarimport java.io.File; public File inputFile;     Workbook workbook = WorkbookFactory.create(inputFile);    Sheet sheet0 = workbook.getSheetAt(0);        int rowNum = sh

java工具类-FreeMarker

package com.huawei.it.citools.utils; import java.io.File;import java.io.IOException;import java.io.StringWriter;import java.util.Map; import org.apache.log4j.Logger; import com.huawei.it.citools.commons.ApplicationException;import com.huawei.it.citoo

应用Java去除一维数组中的重复数字,且不借助任何java工具类。

昨天有个朋友突然问了我这个问题,一时我竟然无言以对,刚开始就是局限于没办法记录重复位置,作为刚刚接触java语言的菜鸟,绞尽脑汁地一最笨的方法实现了,还望大神指点出更好的方法. public class Test01 { public static void main(String[] args) { test1(); } /** * 方法名: test1 * 方法描述:一位数组去除重复的数字,不借助java工具类,方法比较笨拙,还请高手指点 * @param: Test01 * @return