广州北大青鸟计算机职业培训学校
互联网技术培训、软件技术培训、大数据培训、云计算培训、数据分析培训信息网
当前位置:网站首页 > 软件教程 > Java技术 > 正文

惠州Java Zip字节数组中的压缩字节数组是什么?_北大青鸟IT学校

作者:邓华发布时间:2021-04-12分类:Java技术浏览:784


导读:上一篇文章惠州北大青鸟老师给大家介绍了Java Zip字节数组中的校验和知识,那么你知道Java Zip字节数组中的压缩字节数组是什么吗?接下来跟着老师一起来学习一下。

上一篇文章惠州北大青鸟老师给大家介绍了Java Zip字节数组中的校验和知识,那么你知道Java Zip字节数组中的压缩字节数组是什么吗?接下来跟着老师一起来学习一下。

我们可以使用java.util.zip包中的Deflater和Inflater类来分别压缩和解压缩字节数组中的数据。

我们可以使用Deflater类中的一个常量来指定压缩级别。

这些常数是BEST_COMPRESSION,BEST_ SPEED,DEFAULT_COMPRESSION和NO_COMPRESSION。

最佳速度意味着较低的压缩比,最好的压缩意味着较慢的压缩速度。

Deflater  compressor = new Deflater(Deflater.BEST_COMPRESSION);

默认情况下,压缩数据使用Deflater对象将以ZLIB格式。

要以GZIP或PKZIP格式压缩数据,请通过在构造函数中使用布尔标志为true来指定。

// Uses  the   best speed  compression and  GZIP format
Deflater  compressor = new Deflater(Deflater.BEST_SPEED, true);

以下代码显示如何使用Deflater和Inflater类压缩和解压缩字节数组

import java.io.ByteArrayOutputStream;import java.io.IOException;import java.util.zip.DataFormatException;import java.util.zip.Deflater;import java.util.zip.Inflater;public class Main {  public static void main(String[] args) throws Exception {
   String input = "Hello world!";    byte[] uncompressedData = input.getBytes("UTF-8");    byte[] compressedData = compress(uncompressedData,
       Deflater.BEST_COMPRESSION, false);    byte[] decompressedData = decompress(compressedData, false);

   String output = new String(decompressedData, "UTF-8");

   System.out.println("Uncompressed data length: " + uncompressedData.length);
   System.out.println("Compressed data length:  " + compressedData.length);
   System.out.println("Decompressed data length:  " + decompressedData.length);
 }  public static byte[] compress(byte[] input, int compressionLevel,      boolean GZIPFormat) throws IOException {
   Deflater compressor = new Deflater(compressionLevel, GZIPFormat);

   compressor.setInput(input);

   compressor.finish();

   ByteArrayOutputStream bao = new ByteArrayOutputStream();    byte[] readBuffer = new byte[1024];    int readCount = 0;    while (!compressor.finished()) {
     readCount = compressor.deflate(readBuffer);      if (readCount > 0) {
       bao.write(readBuffer, 0, readCount);
     }
   }

   compressor.end();    return bao.toByteArray();
 }  public static byte[] decompress(byte[] input, boolean GZIPFormat)      throws IOException, DataFormatException {
   Inflater decompressor = new Inflater(GZIPFormat);
   decompressor.setInput(input);
   ByteArrayOutputStream bao = new ByteArrayOutputStream();    byte[] readBuffer = new byte[1024];    int readCount = 0;    while (!decompressor.finished()) {
     readCount = decompressor.inflate(readBuffer);      if (readCount > 0) {
       bao.write(readBuffer, 0, readCount);
     }
   }
   decompressor.end();    return bao.toByteArray();
 }
}

上面的代码生成以下结果。

Uncompressed data length: 12

Compressed data length: 20

Decompressed data length: 12

相信通过上面老师的解答,大家应该知道Java Zip字节数组中的压缩字节数组是什么了吧!想了解更多关于Java的资讯,可以来惠州北大青鸟新方舟校区详细了解。

java4.png

Java

标签:惠州计算机JAVA软件开发惠州计算机Java软件开发惠州计算机JAVA培训惠州计算机JAVA软件开发学校惠州计算机Java软件开发培训JAVAJava软件开发北大青鸟IT计算机学校北大青鸟IT软件学校北大青鸟IT学校


Java技术排行
标签列表
网站分类
文章归档
最近发表