zip文件解压工具类
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文件解压工具类的更多相关文章
- Zip包解压工具类
最近在做项目的自动检测离线升级,使用到了解压zip包的操作,本着拿来主义精神,搞了个工具类(同事那边拿的),用着还不错. package com.winning.polaris.admin.utils ...
- 文件压缩、解压工具类。文件压缩格式为zip
package com.JUtils.file; import java.io.BufferedOutputStream; import java.io.File; import java.io.Fi ...
- ZIP文件解压
public class DZip { /// <summary> /// 压缩为ZIP文件 /// </summary> public void Zip(string dir ...
- Linux 下 zip 文件解压乱码解决方案,ubuntu16.10亲测可用
文章来源: https://www.zhihu.com/question/20523036 今天邮件中收到了一个压缩文件,解压后却是乱码,从网上也找了几个方法,目前这个方法还是比较可靠的,如下所示: ...
- linux下压缩成zip文件解压zip文件
linux zip命令的基本用法是: zip [参数] [打包后的文件名] [打包的目录路径] linux zip命令参数列表: -a 将文件转成ASCII模式 -F 尝试修复损坏 ...
- Python实现加密的ZIP文件解压(密码已知)
博主在上篇博文介绍了<Python实现加密的RAR文件解压(密码已知)>后,又尝试了ZIP文件的解压方法,下面开始分享. 当ZIP文件的压缩密码已知时,可以通过调用zipfile库进行解压 ...
- Java_压缩与解压工具类
转载请注明出处:http://blog.csdn.net/y22222ly/article/details/52201675 zip压缩,解压 zip压缩与解压主要依靠java api的两个类: Zi ...
- linux下zip文件解压后乱码解决方案
解决办法一,利用pyton来处理 1.vi uzip文件2.复制一下内容(Python) #!/usr/bin/env python # -*- coding: utf-8 -*- # uzip.py ...
- zip文件解压或压缩
<span style="font-size:18px;">/** * lsz */ public final class ZipUtil { /** * 解压zip文 ...
随机推荐
- Java二维码生成与解码
基于google zxing 的Java二维码生成与解码 一.添加Maven依赖(解码时需要上传二维码图片,所以需要依赖文件上传包) <!-- google二维码工具 --> &l ...
- 转:如何在Vue项目中使用vw实现移动端适配
https://www.w3cplus.com/mobile/vw-layout-in-vue.html 有关于移动端的适配布局一直以来都是众说纷纭,对应的解决方案也是有很多种.在<使用Flex ...
- Confluence 6 服务器的许可证信息
Confluence 6 服务器的许可证信息. https://www.cwiki.us/display/CONFLUENCEWIKI/Managing+your+Confluence+License
- Confluence 6 允许其他用户编辑站点欢迎消息
你可以通过使用 Include Page 宏从你站点其他页面中包含内容,而允许其他不是 Confluence 管理员的用户编辑站点欢迎消息.使用这种方式能够避免直接对模板文件中的内容进行编辑. 从站点 ...
- Uiautomator - 6.0 以上权限受限问题
问题:在android studio中使用UiAutomator 2.0 编写测试用例时,要实现截图(非命令方式),写入文件时出现权限被拒绝的提示.例如: java.io.FileNotFoundEx ...
- vue的单选框
- laravel 迁移枚举
$table->enum('type', ['replace', 'warning'])->comment('类型');
- BrupSuite渗透测试笔记(九)
一. Update BurpSuite 1.选择help ,点击check for updates 记可以进入最新版本的下载界面,profession version need pay for mon ...
- border画梯形
<!doctype html><html lang="en"> <head> <meta charset="UTF-8&quo ...
- cf1121d 尺取
尺取,写起来有点麻烦 枚举左端点,然后找到右端点,,使得区间[l,r]里各种颜色花朵的数量满足b数组中各种花朵的数量,然后再judge区间[l,r]截取出后能否可以供剩下的n-1个人做花环 /* 给定 ...