java 对byte数组进行gzip压缩 解压
时间: 2024-03-12 17:46:11 浏览: 28
Java中可以使用`java.util.zip.GZIPOutputStream`类对byte数组进行gzip压缩,使用`java.util.zip.GZIPInputStream`类对压缩后的byte数组进行解压缩。
以下是一个示例代码,将一个字符串进行gzip压缩,并将压缩后的byte数组再进行解压缩,最后输出解压缩后的字符串:
```java
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.nio.charset.StandardCharsets;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;
public class GzipExample {
public static void main(String[] args) throws IOException {
String inputString = "This is a test string for gzip compression and decompression.";
byte[] inputBytes = inputString.getBytes(StandardCharsets.UTF_8);
// 压缩
ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
GZIPOutputStream gzipOutputStream = new GZIPOutputStream(outputStream);
gzipOutputStream.write(inputBytes);
gzipOutputStream.close();
byte[] compressedBytes = outputStream.toByteArray();
// 解压缩
ByteArrayInputStream inputStream = new ByteArrayInputStream(compressedBytes);
GZIPInputStream gzipInputStream = new GZIPInputStream(inputStream);
ByteArrayOutputStream output = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len;
while ((len = gzipInputStream.read(buffer)) > 0) {
output.write(buffer, 0, len);
}
String outputString = new String(output.toByteArray(), StandardCharsets.UTF_8);
System.out.println(outputString); // 输出: This is a test string for gzip compression and decompression.
}
}
```
在上面的代码中,我们先将字符串转换为byte数组,然后使用`GZIPOutputStream`将byte数组进行压缩,压缩后的byte数组输出到一个`ByteArrayOutputStream`中。接着,我们再使用`GZIPInputStream`将压缩后的byte数组进行解压缩,解压后的byte数组输出到另一个`ByteArrayOutputStream`中,最后将解压缩后的byte数组转换为字符串。