编辑代码

import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
import java.util.Base64;

public class ZipBase64Example {

    public static void main(String[] args) {
        // 输入字符串
        String input = "abc123";

        // 调用方法进行压缩并编码
        String encodedResult = zipEncode(input, true);

        // 输出结果
        System.out.println("Compressed and Base64 Encoded String:");
        System.out.println(encodedResult);
    }

    public static String zipEncode(String str, boolean isZip) {
        String encodeStr = "";
        try {
            if (isZip) {
                // 压缩并 Base64 编码
                // byte[] compressedData = compress(str);
                // System.out.println("Compressed Data (Java): " + java.util.Arrays.toString(compressedData));
                // encodeStr = Base64.getEncoder().encodeToString(compressedData);
                encodeStr = Base64.getEncoder().encodeToString(compress(str));
            } else {
                // 直接 Base64 编码
                encodeStr = Base64.getEncoder().encodeToString(str.getBytes("UTF-8")).trim();
            }

            if (encodeStr != null) {
                encodeStr = encodeStr.replaceAll("\r\n", "").replaceAll("\n", "");
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
        return encodeStr;
    }

    private static byte[] compress(String str) {
        if (str == null) {
            return null;
        }
        byte[] compressed;
        ByteArrayOutputStream out = null;
        ZipOutputStream zout = null;
        try {
            out = new ByteArrayOutputStream();
            zout = new ZipOutputStream(out);
            zout.putNextEntry(new ZipEntry("0")); // 创建一个条目名为 "0" 的 ZIP 条目
            zout.write(str.getBytes("UTF-8"));
            zout.closeEntry();
            compressed = out.toByteArray();
        } catch (IOException e) {
            compressed = null;
            e.printStackTrace();
        } finally {
            if (zout != null) {
                try {
                    zout.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
            if (out != null) {
                try {
                    out.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        return compressed;
    }
}