参考 : Snappy Java API简介_cjf_wei的博客-CSDN博客_snappy-java
maven
<dependency>
<groupId>org.xerial.snappy</groupId>
<artifactId>snappy-java</artifactId>
<version>1.1.8.4</version>
</dependency>
代码
import org.xerial.snappy.SnappyOutputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
/**
* @Author: liyue
* @Date: 2021/12/03/11:58
* @Description:
*/
public class SnappyUtil {
public static void main(String[] args) {
long currentTimeMillis = System.currentTimeMillis();
System.out.println(compress("/Users/test/Downloads/1111.txt"));
System.out.println("耗时:" + (System.currentTimeMillis() - currentTimeMillis) + "毫秒");
}
public static String compress(String filePath) {
//待压缩文件
File file = new File(filePath);
//压缩结果文件
File out = new File(file.getParent(), file.getName() + ".snappy");
byte[] buffer = new byte[1024 * 1024 * 8];
FileInputStream fi = null;
FileOutputStream fo = null;
SnappyOutputStream sout = null;
try {
fi = new FileInputStream(file);
fo = new FileOutputStream(out);
sout = new SnappyOutputStream(fo);
while (true) {
int count = fi.read(buffer, 0, buffer.length);
if (count == -1) {
break;
}
sout.write(buffer, 0, count);
}
sout.flush();
} catch (Throwable ex) {
ex.printStackTrace();
} finally {
if (sout != null) {
try {
sout.close();
} catch (Exception e) {
}
}
if (fi != null) {
try {
fi.close();
} catch (Exception x) {
}
}
if (fo != null) {
try {
fo.close();
} catch (Exception x) {
}
}
}
return out.getPath();
}
}