Base64压缩解压工具类

不羁的心 提交于 2020-02-28 07:32:30

Base64压缩解压工具类

主要代码参考 Java Gzip类 - base64压缩和解压

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;
import com.sun.org.apache.xml.internal.security.utils.Base64;

/**
 * @ClassName ZipUtil
 * @Description base64压缩工具类
 * {@link "https://blog.csdn.net/lan_liang/article/details/53207845"}
 * @Author hxm
 * @Date 2020-02-21 10:00
 **/
public final class ZipUtil
{
    /**
     * 压缩字符串
     * @param string
     * @return
     */
    public static String CompressToBase64(String string){
        try {
            ByteArrayOutputStream os = new ByteArrayOutputStream(string.length());
            GZIPOutputStream gos = new GZIPOutputStream(os);
            gos.write(string.getBytes());
            gos.close();
            byte[] compressed = os.toByteArray();
            os.close();

            String result = Base64.encode(compressed);
            return result;
        } catch (IOException e) {
            e.printStackTrace();

        }
        catch (Exception ex){


        }
        return "";
    }

    /**
     * 解压缩
     * @param textToDecode
     * @return
     */
    public static String DecompressToBase64(String textToDecode){
        try {
            byte[] compressed = Base64.decode(textToDecode);
            final int BUFFER_SIZE = 32;
            ByteArrayInputStream inputStream = new ByteArrayInputStream(compressed);

            GZIPInputStream gis  = new GZIPInputStream(inputStream, BUFFER_SIZE);

            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            byte[] data = new byte[BUFFER_SIZE];
            int bytesRead;
            while ((bytesRead = gis.read(data)) != -1) {
                baos.write(data, 0, bytesRead);
            }

            return baos.toString("UTF-8");
        }
        catch (IOException e) {
            e.printStackTrace();
        }
        catch (Exception ex){


        }
        return "";
    }

    public static void main(String[] args) {
        String a = "aaabbbccc意思啦围棋";
        String baseA = ZipUtil.CompressToBase64(a);
        System.out.println(baseA);

        System.out.println(ZipUtil.DecompressToBase64(baseA));
    }
}


标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!