溫馨提示×

java bytestring如何進行數據壓縮

小樊
108
2024-11-30 17:55:50
欄目: 編程語言

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

0
亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女