`

java.util.zip.Deflater 压缩 inflater解压

    博客分类:
  • java
 
阅读更多

import java.util.zip.Deflater;
import java.util.zip.Inflater;
import java.util.zip.DataFormatException;
import java.io.ByteArrayOutputStream;

public class CompressionTools {

  // Export only static methods
  private CompressionTools() {}

  public static byte[] compress(byte[] value, int offset, int length, int compressionLevel) {  
    ByteArrayOutputStream bos = new ByteArrayOutputStream(length);

    Deflater compressor = new Deflater();

    try {
      compressor.setLevel(compressionLevel);  //将当前压缩级别设置为指定值。
      compressor.setInput(value, offset, length);
      compressor.finish(); //调用时,指示压缩应当以输入缓冲区的当前内容结尾。

      // Compress the data
      final byte[] buf = new byte[1024];
      while (!compressor.finished()) { 
    //如果已到达压缩数据输出流的结尾,则返回 true。
        int count = compressor.deflate(buf);
         // 使用压缩数据填充指定缓冲区。
        bos.write(buf, 0, count);
      }
    } finally {
      compressor.end(); //关闭解压缩器并放弃所有未处理的输入。
    }

    return bos.toByteArray();
  }
  
  public static byte[] compress(byte[] value, int offset, int length) {
    return compress(value, offset, length, Deflater.BEST_COMPRESSION);
  // 最佳压缩的压缩级别
  }
  
   public static byte[] compress(byte[] value) {
    return compress(value, 0, value.length, Deflater.BEST_COMPRESSION);
  }

   public static byte[] decompress(byte[] value) throws DataFormatException {
   
    ByteArrayOutputStream bos = new ByteArrayOutputStream(value.length);

    Inflater decompressor = new Inflater();

    try {
      decompressor.setInput(value);
   
      final byte[] buf = new byte[1024];
      while (!decompressor.finished()) {
        int count = decompressor.inflate(buf);
        bos.write(buf, 0, count);
      }
    } finally {  
      decompressor.end();
    }
    
    return bos.toByteArray();
  }

}


具体 API 地址:http://www.gznc.edu.cn/yxsz/jjglxy/book/Java_api/java/util/zip/Deflater.html
分享到:
评论

相关推荐

    根据java.util.zip源码修改zip支持中文

    5. **Inflater/Deflater**: 这两个类是用于压缩和解压缩数据的,它们与编码问题无关,但在处理ZIP文件时也会用到。 6. **自定义实现**: 如果源码修改不是首选方案,也可以选择自定义一个类库,如Apache Commons ...

    JAVA文件压缩与解压缩实践(源代码+论文).zip

    对于更底层的控制,你可以使用`java.util.zip.Deflater`进行压缩和`java.util.zip.Inflater`进行解压缩。这两个类提供了对DEFLATE算法的直接访问,DEFLATE是GZIP和ZIP背后的核心压缩算法。 4. **源代码实践**: ...

    java zlib zip gzip

    在Java中,Zlib库被内置于`java.util.zip`包中,通过`Inflater`和`Deflater`类提供压缩和解压缩服务。例如,你可以使用`Deflater`类来压缩数据,然后用`Inflater`类解压。 ```java byte[] compressedData = ...; //...

    JAVA文件压缩与解压缩实践(源代码+论文).rar

    4. **Deflater与Inflater**:`java.util.zip`包还提供了Deflater和Inflater类,它们分别用于数据压缩和解压缩。Deflater可以与任何输出流结合,将数据压缩成Deflate格式,而Inflater则可以与任何输入流结合,解压缩...

    基于Java的开源Winzip压缩工具Java版源码.zip

    这个包包含了一系列类,如ZipOutputStream用于创建ZIP文件,ZipInputStream用于读取和解压ZIP文件,以及Deflater和Inflater类用于数据的压缩和解压缩。通过这些类,开发者可以方便地构建一个功能完整的压缩工具。 ...

    javazip压缩类

    JavaZip压缩类是Java编程语言中用于处理ZIP文件格式的核心工具,主要集中在java.util.zip包中。这个包提供了多种类和接口,使得开发者能够轻松地对数据进行压缩和解压缩,尤其是在开发需要处理大量数据的应用时,如...

    文件压缩与解压缩zip工具类

    Java的`ZipFile`类提供了一种方便的方式来读取已存在的`Zip`文件,而`Deflater`和`Inflater`类则分别用于压缩和解压缩原始数据。 6. **性能优化** 当处理大量文件时,可以考虑使用缓冲区来提高性能,以及使用多...

    java-ZIP-AND-UNZIP.zip_zip

    Java标准库提供了`java.util.zip`包,该包包含了处理压缩和解压缩功能的类,如`ZipOutputStream`和`ZipInputStream`。这两个类分别用于创建ZIP文件和读取ZIP文件。 2. **`ZipOutputStream`**: 这个类用于创建ZIP...

    后台_java_zip_

    主要的类有ZipOutputStream用于创建zip文件,ZipInputStream用于读取zip文件,以及Deflater和Inflater用于压缩和解压缩数据。 2. **创建ZIP文件**:使用ZipOutputStream,可以通过不断地调用putNextEntry()方法来...

    JAVA开发JAVA文件压缩与解压缩实践(源代码+论文).zip

    1. **Java压缩库**: Java标准库提供了`java.util.zip`包,该包包含了处理ZIP、GZ、Z和BZip2等压缩格式的类。如`ZipOutputStream`用于创建ZIP文件,`GZIPOutputStream`用于GZIP压缩,`InflaterInputStream`和`...

    基于Java的数据压缩与传输实例.zip

    3. **Deflater和Inflater**:除了GZIP,Java还提供了`Deflater`和`Inflater`类,它们分别用于数据压缩和解压缩,支持DEFLATE算法,这是ZIP文件格式的一部分。 4. **文件读写操作**:压缩和传输数据前,需要对本地...

    ZipUtilsjava压缩文件源码--ZipUtilsJava源码

    在Java中,我们可以使用java.util.zip包中的类来处理ZIP文件。 ZipUtils通常包含以下功能: 1. 压缩文件/目录:它会遍历指定的文件或目录,使用Deflater类进行压缩,然后将结果写入ZIP输出流。 2. 解压缩文件:读取...

    JAVA文件压缩与解压缩实践(源代码+论文)

    Java提供了多种库来支持文件的压缩和解压缩,最常用的是Java标准库中的`java.util.zip`包。这个包提供了几个关键类,如`ZipOutputStream`和`ZipInputStream`用于处理ZIP格式的压缩文件,而`GZIPOutputStream`和`...

    各类压缩算法聚合

    例如,Java标准库中的`java.util.zip`包就包含了多种压缩和解压缩工具,如GZIP、Deflater和Inflater等。GZIP是一种常见的无损压缩格式,常用于文件的压缩和HTTP请求的传输。Deflater和Inflater则是GZIP的底层实现,...

    文件解压Java源码

    `ZipEntry`类代表ZIP文件中的一个条目,而`Inflater`和`Deflater`则用于压缩和解压缩数据。 要实现文件解压,我们需要遵循以下步骤: 1. **创建ZipInputStream对象**:通过`new ZipInputStream(new ...

    Android 图片压缩与解压的方法

    1. **ZipFile和ZipInputStream**:Android提供了`java.util.zip`包中的`ZipFile`和`ZipInputStream`类用于读取和解压ZIP文件。它们可以遍历压缩包中的所有条目,逐个解压到指定目录。 2. **Gzip和Deflater**:如果...

    JAVA中的deflate压缩实现方法

    Java的`java.util.zip`包提供了对DEFLATE算法的支持,主要通过`Deflater`和`Inflater`两个类来实现压缩和解压缩功能。 `Deflater`类是用于数据压缩的,而`Inflater`类则用于解压缩。在给定的代码示例中,可以看到这...

Global site tag (gtag.js) - Google Analytics