集册 Java实例教程 解压缩字节数组

解压缩字节数组

欢马劈雪     最近更新时间:2020-01-02 10:19:05

463
解压缩字节数组

/**

 * Licensed to the Apache Software Foundation (ASF) under one

 * or more contributor license agreements.  See the NOTICE file

 * distributed with this work for additional information

 * regarding copyright ownership.  The ASF licenses this file

 * to you under the Apache License, Version 2.0 (the

 * "License"); you may not use this file except in compliance

 * with the License.  You may obtain a copy of the License at

 *

 *     http://www.apache.org/licenses/LICENSE-2.0

 *

 * Unless required by applicable law or agreed to in writing, software

 * distributed under the License is distributed on an "AS IS" BASIS,

 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.

 * See the License for the specific language governing permissions and

 * limitations under the License.

 */

//package com.nowjava;


import java.util.zip.DataFormatException;
/** 
 来自 时 代 J a v a 公 众 号 - N o w J a v  a . c o m**/

import java.util.zip.Inflater;


import java.io.*;


public class Main {

    public static void main(String[] argv) throws Exception {

        byte[] compressedData = new byte[] { 34, 35, 36, 37, 37, 37, 67,

                68, 69 };

        System.out.println(java.util.Arrays

                .toString(decompress(compressedData)));

    }
//n o w  j a v a  . c o m

    public static byte[] decompress(byte[] compressedData, int off, int len)

            throws IOException, DataFormatException {

        // Create the decompressor and give it the data to compress

        Inflater decompressor = new Inflater();

        decompressor.setInput(compressedData, off, len);


        // Create an expandable byte array to hold the decompressed data

        ByteArrayOutputStream bos = new ByteArrayOutputStream(

                compressedData.length);


        // Decompress the data

        byte[] buf = new byte[1024];

        while (!decompressor.finished()) {

            int count = decompressor.inflate(buf);

            bos.write(buf, 0, count);

        }

        bos.close();


        // Get the decompressed data

        return bos.toByteArray();

    }


    public static byte[] decompress(byte[] compressedData)

            throws IOException, DataFormatException {

        return decompress(compressedData, 0, compressedData.length);

    }


    
展开阅读全文