如何在InputStream中实现数据的压缩和解压

   2024-09-30 2800
核心提示:在Java中,可以使用java.util.zip包中的类来实现对InputStream中数据的压缩和解压。以下是一个简单的示例,展示了如何使用GZIP格

在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方法将压缩后的数据解压缩。最后,读取解压缩后的数据并打印出来。

 
举报打赏
 
更多>同类维修大全
推荐图文
推荐维修大全
点击排行

网站首页  |  关于我们  |  联系方式网站留言    |  赣ICP备2021007278号