Java 文本数据的gzip压缩
一、gzip
Java提供的压缩方式有GZIP、和ZIP三种,其中GZIP带有CRC校验码、标识首部和尾部,数据部分和一致java 数据压缩传输,相对来说具有较高的压缩比和压缩速度且带有校验方式,但java的不提供压缩级别的设置,因此,改变压缩级别需要以继承等方式设置的压缩级别来实现。
二、代码示例
package com.company.example;
import org.apache.commons.lang3.StringUtils;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.nio.charset.StandardCharsets;
import java.util.Base64;
<p>![java udt可靠传输_java rmi传输对象_java 数据压缩传输][1]
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;
public class Utills {
/**
* 文本数据gzip压缩
*/
public static String gzipCompress(String text) {
if (StringUtils.isEmpty(text)) {
return null;
  ![java rmi传输对象_java 数据压缩传输_java udt可靠传输][2]
}
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
try (GZIPOutputStream gzipOutputStream = new GZIPOutputStream(byteArrayOutputStream)) {
gzipOutputStream.write(text.getBytes(StandardCharsets.UTF_8));
gzipOutputStream.flush();
gzipOutputStream.finish();
} catch (Exception e) {
System.out.println(e);
return null;
  
}
return Base64.getEncoder().encodeToString(byteArrayOutputStream.toByteArray());
}
/**
* 文本数据gzip解压
*/
public static String gzipDecompress(String text) {
if (StringUtils.isEmpty(text)) {
  ![java 数据压缩传输_java rmi传输对象_java udt可靠传输][3]
return null;
}
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(Base64.getDecoder().decode(text));
try (GZIPInputStream gzipInputStream = new GZIPInputStream(byteArrayInputStream)){
byte[] buffer = new byte[256];
int len;
while ((len = gzipInputStream.read(buffer)) != -1) {
byteArrayOutputStream.write(buffer, 0, len);
  ![java rmi传输对象_java 数据压缩传输_java udt可靠传输][4]
}
}catch (Exception e){
System.out.println(e);
return null;
}
return byteArrayOutputStream.toString();
}
}
</p>
三、总结
对于数据包大小要求不是太高,服务端因各种历史因素未开启HTTP的压缩的java 数据压缩传输 Java 文本数据的gzip压缩,希望节省带宽提高数据传输效率的需求可以使用数据gzip压缩;编程环境安全性要求宽松的,可以考虑引入第三方的压缩算法java 数据压缩传输,如谷歌的算法,或者的zstd算法等。
文章来源:https://blog.csdn.net/gehong3641/article/details/127079600