let FileUtil = com.example.hikerview.utils.FileUtil; let javaString = java.lang.String; let Base64 = java.util.Base64; const GZIPOutputStream = java.util.zip.GZIPOutputStream; const GZIPInputStream = java.util.zip.GZIPInputStream; const DeflaterOutputStream = java.util.zip.DeflaterOutputStream; const InflaterInputStream = java.util.zip.InflaterInputStream; const DeflaterInputStream = java.util.zip.DeflaterInputStream; const ByteArrayOutputStream = java.io.ByteArrayOutputStream; const ByteArrayInputStream = java.io.ByteArrayInputStream; const Deflater = java.util.zip.Deflater; function zip(text, mode) { mode = mode ? mode : "gzip"; let baseStr = new javaString(text); // 使用 ByteArrayOutputStream 来捕获压缩后的数据 var baos = new ByteArrayOutputStream(); if (mode == "deflate") { var deflater = new java.util.zip.Deflater(); deflater.setLevel(java.util.zip.Deflater.BEST_COMPRESSION); var dos = new java.util.zip.DeflaterOutputStream(baos, deflater); dos.write(baseStr.getBytes("UTF-8")); dos.finish(); // 完成压缩 dos.close(); } else { var gzos = new java.util.zip.GZIPOutputStream(baos); gzos.write(baseStr.getBytes("UTF-8")); gzos.close(); // 关闭压缩流 } // 将压缩后的数据转换为 Base64 编码的字符串 var compressedData = baos.toByteArray(); var base64String = java.util.Base64.getEncoder().encodeToString(compressedData); // 关闭 ByteArrayOutputStream baos.close(); return String(base64String); } function unzip(text, mode) { mode = mode ? mode : "gzip"; var compressedData = Base64.getDecoder().decode(text); var bais = new ByteArrayInputStream(compressedData); var baos = new ByteArrayOutputStream(); var buffer = java.lang.reflect.Array.newInstance(java.lang.Byte.TYPE, 1024); if (mode == "gzip") { var gis = new GZIPInputStream(bais); let len; while ((len = gis.read(buffer)) != -1) { baos.write(buffer, 0, len); } gis.close(); } else if (mode == "deflate") { var iis = new InflaterInputStream(bais); let len; while ((len = iis.read(buffer)) != -1) { baos.write(buffer, 0, len); } iis.close(); } bais.close(); baos.close(); var decompressedString = new javaString(baos.toByteArray(), "UTF-8"); // 打印解压缩后的字符串 return String(decompressedString); } $.exports = { zip, unzip };