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

avatar
作者
猴君
阅读量:0

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

广告一刻

为您即时展示最新活动产品广告消息,让您随时掌握产品活动新动态!