企业门户网站建设方案书,万能搜索引擎入口,无锡网站排名优化公司哪家好,商城app官方下载应用场景
当字符串太长#xff0c;
需要将字符串值存入数据库时#xff0c;如果字段长度不够#xff0c;则会出现插入失败#xff1b;
或者需要进行Http传输时#xff0c;由于参数长度过长造成http传输失败等。
字符串压缩与解压方法
方法一#xff1a;用 Java8中的…应用场景
当字符串太长
需要将字符串值存入数据库时如果字段长度不够则会出现插入失败
或者需要进行Http传输时由于参数长度过长造成http传输失败等。
字符串压缩与解压方法
方法一用 Java8中的gzip
/*** 使用gzip压缩字符串* param str 要压缩的字符串* return*/
public static String compress(String str) {if (str null || str.length() 0) {return str;}ByteArrayOutputStream out new ByteArrayOutputStream();GZIPOutputStream gzip null;try {gzip new GZIPOutputStream(out);gzip.write(str.getBytes());} catch (IOException e) {e.printStackTrace();} finally {if (gzip ! null) {try {gzip.close();} catch (IOException e) {e.printStackTrace();}//加入Java开发交流君样756584822一起吹水聊天}}return new sun.misc.BASE64Encoder().encode(out.toByteArray());
}/*** 使用gzip解压缩* param compressedStr 压缩字符串* return*/
public static String uncompress(String compressedStr) {if (compressedStr null) {return null;}ByteArrayOutputStream out new ByteArrayOutputStream();ByteArrayInputStream in null;GZIPInputStream ginzip null;byte[] compressed null;String decompressed null;try {compressed new sun.misc.BASE64Decoder().decodeBuffer(compressedStr);in new ByteArrayInputStream(compressed);ginzip new GZIPInputStream(in);byte[] buffer new byte[1024];int offset -1;while ((offset ginzip.read(buffer)) ! -1) {out.write(buffer, 0, offset);}decompressed out.toString();} catch (IOException e) {e.printStackTrace();} finally {if (ginzip ! null) {try {ginzip.close();} catch (IOException e) {}//加入Java开发交流君样756584822一起吹水聊天}if (in ! null) {try {in.close();} catch (IOException e) {}}if (out ! null) {try {out.close();} catch (IOException e) {}}}return decompressed;
}方法二用org.apache.commons.codec.binary.Base64
/*** 使用org.apache.commons.codec.binary.Base64压缩字符串* param str 要压缩的字符串* return*/
public static String compress(String str) {if (str null || str.length() 0) {return str;}//加入Java开发交流君样756584822一起吹水聊天return Base64.encodeBase64String(str.getBytes());
}/*** 使用org.apache.commons.codec.binary.Base64解压缩* param compressedStr 压缩字符串* return*/
public static String uncompress(String compressedStr) {if (compressedStr null) {return null;}return Base64.decodeBase64(compressedStr);
}注意事项
在web项目中服务器端将加密后的字符串返回给前端前端再通过ajax请求将加密字符串发送给服务器端处理的时候在http传输过程中会改变加密字符串的内容导致服务器解压压缩字符串发生异常
java.util.zip.ZipException: Not in GZIP format 解决方法
在字符串压缩之后将压缩后的字符串BASE64加密在使用的时候先BASE64解密再解压即可。