java解压zip文件

import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.File;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.InputStream;
import java.io.OutputStream;
import java.util.Enumeration;
import java.util.zip.CRC32;
import java.util.zip.CheckedInputStream; import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipFile; public class MyZipUtil {
/**
* 解压zip文件
* @throws IOException
*/
public static String unZIP(String zipPath,String outPath ){
ZipFile zipFile=null;
try {
zipFile = new ZipFile(zipPath,"GBK");
//压缩文件的实列,并设置编码
//获取压缩文中的所以项
for(Enumeration<ZipEntry> enumeration = zipFile.getEntries();enumeration.hasMoreElements();)
{
OutputStream os = null;
BufferedOutputStream bos =null;
InputStream is =null;
BufferedInputStream bis =null;
CheckedInputStream cos =null;
ZipEntry zipEntry = null;
try {
zipEntry = enumeration.nextElement();//获取元素
//排除空文件夹
if(!zipEntry.getName().endsWith(File.separator))
{
System.out.println("正在解压文件:"+zipEntry.getName());//打印输出信息
//创建解压目录
File f = new File(outPath);
//判断是否存在解压目录
if(!f.exists())
{
f.mkdirs();//创建解压目录
}
os = new FileOutputStream(outPath+zipEntry.getName().substring(zipEntry.getName().lastIndexOf("/")+1));//创建解压后的文件
bos = new BufferedOutputStream(os);//带缓的写出流
is = zipFile.getInputStream(zipEntry);//读取元素
bis = new BufferedInputStream(is);//读取流的缓存流
cos = new CheckedInputStream(bis, new CRC32());//检查读取流,采用CRC32算法,保证文件的一致性
byte [] b = new byte[1024*8];//字节数组,每次读取1024个字节
//循环读取压缩文件的值
while(cos.read(b)!=-1)
{
bos.write(b);//写入到新文件
}
bos.flush();
os.flush(); }
else
{
//如果为空文件夹,则创建该文件夹
new File(outPath+zipEntry.getName()).mkdirs();
} } catch (Exception e) {
return "1";
}finally {
if(cos!=null){
cos.close();
}
if(bis!=null){
bis.close();
}
if(is!=null){
is.close();
}
if(bos!=null){
bos.close();
}
if(os!=null){
os.close();
}
if(zipEntry!=null){
zipEntry.clone();
}
}
}
System.out.println("解压完成");
} catch (IOException e1) {
// TODO Auto-generated catch block
e1.printStackTrace();
}finally { try {
zipFile.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} return "0";
}
}

zip文件解压工具类的更多相关文章

  1. Zip包解压工具类

    最近在做项目的自动检测离线升级,使用到了解压zip包的操作,本着拿来主义精神,搞了个工具类(同事那边拿的),用着还不错. package com.winning.polaris.admin.utils ...

  2. 文件压缩、解压工具类。文件压缩格式为zip

    package com.JUtils.file; import java.io.BufferedOutputStream; import java.io.File; import java.io.Fi ...

  3. ZIP文件解压

    public class DZip { /// <summary> /// 压缩为ZIP文件 /// </summary> public void Zip(string dir ...

  4. Linux 下 zip 文件解压乱码解决方案,ubuntu16.10亲测可用

    文章来源: https://www.zhihu.com/question/20523036 今天邮件中收到了一个压缩文件,解压后却是乱码,从网上也找了几个方法,目前这个方法还是比较可靠的,如下所示: ...

  5. linux下压缩成zip文件解压zip文件

    linux  zip命令的基本用法是: zip [参数] [打包后的文件名] [打包的目录路径] linux  zip命令参数列表: -a     将文件转成ASCII模式 -F     尝试修复损坏 ...

  6. Python实现加密的ZIP文件解压(密码已知)

    博主在上篇博文介绍了<Python实现加密的RAR文件解压(密码已知)>后,又尝试了ZIP文件的解压方法,下面开始分享. 当ZIP文件的压缩密码已知时,可以通过调用zipfile库进行解压 ...

  7. Java_压缩与解压工具类

    转载请注明出处:http://blog.csdn.net/y22222ly/article/details/52201675 zip压缩,解压 zip压缩与解压主要依靠java api的两个类: Zi ...

  8. linux下zip文件解压后乱码解决方案

    解决办法一,利用pyton来处理 1.vi uzip文件2.复制一下内容(Python) #!/usr/bin/env python # -*- coding: utf-8 -*- # uzip.py ...

  9. zip文件解压或压缩

    <span style="font-size:18px;">/** * lsz */ public final class ZipUtil { /** * 解压zip文 ...

随机推荐

  1. [MySQL]子语句的查询技巧

    一.统计group by语句的行数 group by语句中,如果包含字段统计函数(诸如:count(),sum()...),这种情况下统计函数只会作用于group by的字段,因此想拿到最终结果的行数 ...

  2. GridView的stretchMode属性

    stretchMode属性值的作用是设置GridView中的条目以什么缩放模式去填充剩余空间.参数stretchMode 可选值为:none,spacingWidth,columnWidth, spa ...

  3. sql 迈安

    SELECT b.* FROM dbo.[耕地肥料_01土壤肥料机构建设基本情况]as b ,bs_org where--县(b.任务id in((select bs_task.id--,bs_org ...

  4. 腾讯云部署keepalived高可用

    使用背景: 通过调用python SDK在腾讯云手动部署keepalived高可用 部署环境 系统:centos7.3 Master:192.168.0.100 Slave:192.168.0.14 ...

  5. Windows服务启动进程----Cjwdev.WindowsApi.dll

    windows服务下无法启动外部程序 做一个windows服务监听服务,涉及到windows服务启动外部程序的一个过程,但是调试测试发现,无法简单的用process.start()这种方法, 原因是在 ...

  6. Oracle12c 的安装教程图解(安装系统:windows 2008R2)

    Oracle12c 的安装教程图解(安装系统:windows 2008R2) 第一节 安装和下载路径 1   官方下载路径: http://www.oracle.com/cn/products/dat ...

  7. Confluence 6 识别系统属性

    Confluence 支持一些可以从 Java 系统属性中配置的配置参数和调试(debugging )设置.系统属性通常是使用 -D 为参数选项,这个选项是 Confluence 在运行后设置到 JV ...

  8. Confluence 6 MySQL 问题解决

    如果 Confluence 提示没有 class 文件,你可能将你的 JDBC 驱动放置到了错误的文件夹. 如果你收到了下面的错误信息,请确认 confluenceuser 用户已经具有了所有需求的数 ...

  9. Vue.js结合vue-router和webpack编写单页路由项目

    一.前提 1. 安装了node.js. 2. 安装了npm. 3. 检查是否安装成功: 打开cmd,输入node,没有报“node不是内部或外部命令”表示安装成功node.js. 打开cmd,输入np ...

  10. Nginx + tomcat服务器 负载均衡

    Nginx 反向代理初印象 Nginx (“engine x”) 是一个高性能的HTTP和反向代理 服务器,也是一个IMAP/POP3/SMTP服务器.其特点是占有内存少,并发能力强,事实上nginx ...