亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

如何在InputStream中實現數據的壓縮和解壓

小樊
127
2024-09-02 22:16:53
欄目: 編程語言

在Java中,可以使用java.util.zip包中的類來實現對InputStream中數據的壓縮和解壓。以下是一個簡單的示例,展示了如何使用GZIP格式進行壓縮和解壓縮。

首先,需要導入相關的類:

import java.io.ByteArrayInputStream;
import java.io.ByteArrayOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.zip.GZIPInputStream;
import java.util.zip.GZIPOutputStream;

接下來,實現壓縮和解壓縮的方法:

public class CompressionExample {

    public static InputStream compress(InputStream inputStream) throws IOException {
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();
        GZIPOutputStream gzipOutputStream = new GZIPOutputStream(byteArrayOutputStream);

        byte[] buffer = new byte[1024];
        int len;
        while ((len = inputStream.read(buffer)) != -1) {
            gzipOutputStream.write(buffer, 0, len);
        }

        gzipOutputStream.close();
        inputStream.close();

        return new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
    }

    public static InputStream decompress(InputStream inputStream) throws IOException {
        GZIPInputStream gzipInputStream = new GZIPInputStream(inputStream);
        ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream();

        byte[] buffer = new byte[1024];
        int len;
        while ((len = gzipInputStream.read(buffer)) != -1) {
            byteArrayOutputStream.write(buffer, 0, len);
        }

        gzipInputStream.close();
        inputStream.close();

        return new ByteArrayInputStream(byteArrayOutputStream.toByteArray());
    }
}

這里的compress方法接收一個InputStream,然后使用GZIPOutputStream將其壓縮為GZIP格式。decompress方法接收一個GZIP格式的InputStream,然后使用GZIPInputStream將其解壓縮。

以下是如何使用這些方法的示例:

public static void main(String[] args) throws IOException {
    // 原始數據
    String originalData = "This is a test string for compression and decompression.";
    InputStream originalInputStream = new ByteArrayInputStream(originalData.getBytes());

    // 壓縮數據
    InputStream compressedInputStream = compress(originalInputStream);

    // 解壓縮數據
    InputStream decompressedInputStream = decompress(compressedInputStream);

    // 讀取解壓縮后的數據
    BufferedReader reader = new BufferedReader(new InputStreamReader(decompressedInputStream));
    String line;
    while ((line = reader.readLine()) != null) {
        System.out.println(line);
    }
}

這個示例首先創建了一個包含原始數據的InputStream,然后使用compress方法將其壓縮。接著,使用decompress方法將壓縮后的數據解壓縮。最后,讀取解壓縮后的數據并打印出來。

0
金溪县| 安丘市| 南澳县| 福鼎市| 广州市| 新郑市| 珲春市| 长白| 凤冈县| 凌海市| 县级市| 镇平县| 铁岭市| 布尔津县| 伊川县| 苏州市| 隆回县| 塔城市| 青龙| 黄浦区| 浦城县| 梁平县| 乡城县| 田阳县| 图木舒克市| 长宁区| 太仆寺旗| 乌兰浩特市| 龙南县| 比如县| 铜山县| 杭锦旗| 江陵县| 敖汉旗| 海丰县| 澳门| 土默特右旗| 塔城市| 资源县| 监利县| 精河县|