在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
方法將壓縮后的字節數組解壓縮回原始字節數組。最后,我們將解壓縮后的字節數組轉換回字符串并打印出來。