ZipHelper zip压缩工具包

public class ZipHelper
{
  private static int BUFFER_SIZE = 32768;


  public static void fileToZip(File paramFile1, File paramFile2, int paramInt)
    throws Exception
  {
    paramFile2.createNewFile();
    FileOutputStream localFileOutputStream = new FileOutputStream(paramFile2);
    ZipOutputStream localZipOutputStream = null;
    try
    {
      localZipOutputStream = new ZipOutputStream(new BufferedOutputStream(localFileOutputStream));
      localZipOutputStream.setLevel(paramInt);
      if (paramFile1.isDirectory())
      {
        File[] arrayOfFile = paramFile1.listFiles();
        for (int i = 0; i < arrayOfFile.length; ++i)
          fileToZip(arrayOfFile[i], localZipOutputStream, paramFile1);
      }
      else if (paramFile1.isFile())
      {
        fileToZip(paramFile1, localZipOutputStream, paramFile1.getParentFile());
      }
    }
    finally
    {
      if (localZipOutputStream != null)
        localZipOutputStream.close();
    }
  }


  public static void filesToZip(File[] paramArrayOfFile, File paramFile, int paramInt)
    throws Exception
  {
    paramFile.createNewFile();
    FileOutputStream localFileOutputStream = new FileOutputStream(paramFile);
    ZipOutputStream localZipOutputStream = null;
    try
    {
      localZipOutputStream = new ZipOutputStream(new BufferedOutputStream(localFileOutputStream));
      localZipOutputStream.setLevel(paramInt);
      for (int i = 0; i < paramArrayOfFile.length; ++i)
      {
        File localFile = paramArrayOfFile[i];
        if (localFile.isDirectory())
        {
          File[] arrayOfFile = localFile.listFiles();
          for (int j = 0; j < arrayOfFile.length; ++j)
            fileToZip(arrayOfFile[j], localZipOutputStream, localFile);
        }
        else
        {
          if (!(localFile.isFile()))
            continue;
          fileToZip(localFile, localZipOutputStream, localFile.getParentFile());
        }
      }
    }
    finally
    {
      if (localZipOutputStream != null)
        localZipOutputStream.close();
    }
  }


  private static void fileToZip(File paramFile1, ZipOutputStream paramZipOutputStream, File paramFile2)
    throws Exception
  {
    String str = paramFile1.getPath().substring(paramFile2.getPath().length() + 1);
    if (File.separatorChar != '/')
      str = str.replace(File.separator, "/");
    Object localObject1;
    if (paramFile1.isDirectory())
    {
      paramZipOutputStream.putNextEntry(new ZipEntry(str + "/"));
      paramZipOutputStream.closeEntry();
      localObject1 = paramFile1.listFiles();
      for (int i = 0; i < localObject1.length; ++i)
        fileToZip(localObject1[i], paramZipOutputStream, paramFile2);
    }
    else
    {
      localObject1 = null;
      try
      {
        localObject1 = new FileInputStream(paramFile1);
        paramZipOutputStream.putNextEntry(new ZipEntry(str));
        streamCopy((InputStream)localObject1, paramZipOutputStream);
      }
      finally
      {
        paramZipOutputStream.closeEntry();
        if (localObject1 != null)
          ((FileInputStream)localObject1).close();
      }
    }
  }


  private static void streamCopy(InputStream paramInputStream, OutputStream paramOutputStream)
    throws IOException
  {
    byte[] arrayOfByte = new byte[BUFFER_SIZE];
    while ((i = paramInputStream.read(arrayOfByte)) > 0)
    {
      int i;
      paramOutputStream.write(arrayOfByte, 0, i);
    }
  }
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值