zoukankan      html  css  js  c++  java
  • JDK 自带压缩解压流

    复制代码
    package com.test.java.zip;
    

    import java.io.BufferedInputStream;
    import java.io.BufferedOutputStream;
    import java.io.ByteArrayInputStream;
    import java.io.ByteArrayOutputStream;
    import java.io.FileInputStream;
    import java.io.FileOutputStream;
    import java.io.IOException;
    import java.util.zip.ZipEntry;
    import java.util.zip.ZipInputStream;
    import java.util.zip.ZipOutputStream;

    /**

    • @author jrwangxin1 字节数组压缩解压工具
      /
      public class ZipUtil {
      /** 压缩
      /
      public static byte[] zip(byte[] source) throws IOException {
      ByteArrayOutputStream byteArrayOutputStream
      = new ByteArrayOutputStream();
      ZipOutputStream zipOutputStream
      = new ZipOutputStream(byteArrayOutputStream);
      zipOutputStream.putNextEntry(
      new ZipEntry("0"));
      BufferedOutputStream bufferedOutputStream
      = new BufferedOutputStream(zipOutputStream);
      bufferedOutputStream.write(source);
      bufferedOutputStream.close();
      return byteArrayOutputStream.toByteArray();
      }

      /** 解压 */
      public static byte[] unzip(byte[] source) throws IOException {
      ZipInputStream zipInputStream
      = new ZipInputStream(new ByteArrayInputStream(source));
      while (zipInputStream.getNextEntry() != null) {
      ByteArrayOutputStream byteArrayOutputStream
      = new ByteArrayOutputStream();

           </span><span style="color: #0000ff">byte</span>[] buffer = <span style="color: #0000ff">new</span> <span style="color: #0000ff">byte</span>[4096<span style="color: #000000">];
           </span><span style="color: #0000ff">int</span> i=0<span style="color: #000000">;
           </span><span style="color: #0000ff">while</span> ((i = zipInputStream.read(buffer)) != -1<span style="color: #000000">) {
               byteArrayOutputStream.write(buffer,</span>0<span style="color: #000000">,i);
           }
           </span><span style="color: #0000ff">return</span><span style="color: #000000"> byteArrayOutputStream.toByteArray();
       }
       </span><span style="color: #0000ff">return</span> <span style="color: #0000ff">null</span><span style="color: #000000">;
      

      }

      public static void main(String[] args) throws IOException {
      // 读文件
      String file = "E:/pic.jpg";
      String outFile
      = "E:/picunzip.jpg";
      BufferedInputStream bufferedInputStream
      = new BufferedInputStream(new FileInputStream(file));
      byte[] bytes1 = new byte[bufferedInputStream.available()];
      bufferedInputStream.read(bytes1);
      bufferedInputStream.close();
      System.out.println(
      "压缩前大小: " + bytes1.length);
      // 压缩
      byte[] bytes2 = ZipUtil.zip(bytes1);
      System.out.println(
      "压缩后大小: " + bytes2.length);
      // 解压
      byte[] bytes3 = ZipUtil.unzip(bytes2);
      System.out.println(
      "unzip解压后大小: " + bytes3.length);

       </span><span style="color: #008000">//</span><span style="color: #008000"> 输出到文件以便验证</span>
       BufferedOutputStream bufferedOutputStream = <span style="color: #0000ff">new</span> BufferedOutputStream(<span style="color: #0000ff">new</span><span style="color: #000000"> FileOutputStream(outFile));
       bufferedOutputStream.write(bytes3);
       bufferedOutputStream.close();
      

      }
      }

复制代码
查看全文
  • 相关阅读:
    【技术贴】【技术贴】每次双击都会跳出来打开方式的解决办法。。。选择你想用来打开此文件的程序。。
    【技术贴】xp更改登录头像,打开“用户账户”时显示:Automation服务器不能创建对象。的解决办
    【技术贴】关于惠普在郑州建立全球云计算服务中心的解析。。来自大河报
    【技术贴】如何删除卡巴斯基的日志?占C盘了好多空间....
    2007 Office 产品版本号
    SharePoint Workflow 基础
    重装SPS 2003的一点经验
    列出有空应该看一下的要点
    WinDBG命令概览(下) 扩展命令
    Content Deployment入门(下)
  • 原文地址:https://www.cnblogs.com/jpfss/p/9834676.html
  • Copyright © 2011-2022 走看看