一、导包
坐标:
<dependency>
<groupId>org.xerial.snappy</groupId>
<artifactId>snappy-java</artifactId>
<version>1.1.2.4</version>
</dependency>
也可以去仓库中心下载
二、代码
压缩、解压缩实现
import info.compress.InputGenerator;
import org.xerial.snappy.Snappy;
import org.xerial.snappy.SnappyFramedOutputStream;
import org.xerial.snappy.SnappyInputStream;
import org.xerial.snappy.SnappyOutputStream;
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
public class SnappyImp {
private final int BLOCK = 1024 * 1024 * 8;
/**
* 使用Snappy.compress进行压缩
* @param data
* @return byte[]
* @create 2020/3/11 16:38
*/
public byte[] snappyCompress(byte[] data) throws Exception {
return Snappy.compress(data);
}
/**
* 使用Snappy.uncompress进行解压缩
* @param data
* @return byte[]
* @create 2020/3/11 16:38
*/
public byte[] snappyDecompress(byte[] data) throws Exception {
return Snappy.uncompress(data);
}
/**
* 使用SnappyOutputStream进行压缩
* @param data
* @return byte[]
* @create 2020/3/11 21:27
*/
public byte[] snappyStreamCompress(byte[] data) throws IOException{
ByteArrayInputStream is = new ByteArrayInputStream(data);
ByteArrayOutputStream os = new ByteArrayOutputStream();
SnappyOutputStream sos = new SnappyOutputStream(os);
int count;
byte temp[] = new byte[BLOCK];
try {
while ((count = is.read(temp)) != -1) {
sos.write(temp, 0, count);
}
sos.flush(