中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

如何在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
新和县| 七台河市| 句容市| 林州市| 民勤县| 襄汾县| 明光市| 娄底市| 利川市| 梅州市| 宜昌市| 彭山县| 晋江市| 宜良县| 霞浦县| 吴堡县| 三明市| 大英县| 乌什县| 固镇县| 宣恩县| 赤水市| 彭水| 襄垣县| 东兰县| 得荣县| 称多县| 河北区| 隆尧县| 滦南县| 深水埗区| 肥乡县| 绥江县| 达州市| 靖西县| 肥西县| 克拉玛依市| 尚义县| 巧家县| 闽侯县| 冕宁县|