在Java中,可以使用java.util.zip
包中的类对字节字符串进行压缩和解压缩。以下是一个简单的示例,展示了如何使用GZIP算法对字节字符串进行压缩和解压缩:
import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;
public class ByteArrayCompression {
public static void main(String[] args) {
String originalString = "这是一个需要压缩的字符串";
byte[] originalBytes = originalString.getBytes();
try {
// 压缩
byte[] compressedBytes = compress(originalBytes);
System.out.println("压缩后的字节数: " + compressedBytes.length);
// 解压缩
byte[] decompressedBytes = decompress(compressedBytes);
String decompressedString = new String(decompressedBytes);
System.out.println("解压缩后的字符串: " + decompressedString);
} catch (IOException e) {
e.printStackTrace();
}
}
public static byte[] compress(byte[] data) throws IOException {
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
GZIPOutputStream gzipOutputStream = new GZIPOutputStream(byteArrayOutputStream);
gzipOutputStream.write(data);
gzipOutputStream.close();
return byteArrayOutputStream.toByteArray();
}
public static byte[] decompress(byte[] data) throws IOException {
ByteArrayInputStream byteArrayInputStream = new ByteArrayInputStream(data);
GZIPInputStream gzipInputStream = new GZIPInputStream(byteArrayInputStream);
ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
byte[] buffer = new byte[1024];
int len;
while ((len = gzipInputStream.read(buffer)) != -1) {
byteArrayOutputStream.write(buffer, 0, len);
}
gzipInputStream.close();
return byteArrayOutputStream.toByteArray();
}
}
在这个示例中,我们首先创建了一个包含原始字符串的字节数组。然后,我们使用compress
方法将其压缩为字节数组。接下来,我们使用decompress
方法将压缩后的字节数组解压缩回原始字节数组。最后,我们将解压缩后的字节数组转换回字符串并打印出来。