91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

如何在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
吕梁市| 大姚县| 无棣县| 五原县| 萍乡市| 平顺县| 浪卡子县| 钟祥市| 浦北县| 禹州市| 太保市| 郯城县| 邢台市| 庆云县| 郸城县| 武川县| 平泉县| 中阳县| 徐汇区| 南昌县| 肇源县| 齐河县| 梁山县| 肥西县| 普格县| 玉溪市| 通山县| 逊克县| 汉沽区| 梁河县| 吉木萨尔县| 布拖县| 彝良县| 弋阳县| 嫩江县| 广丰县| 宝清县| 甘泉县| 仪征市| 黔南| 武邑县|