Zip文件压缩与解压

1 Maven依赖

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0"xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>cn.soqi</groupId><artifactId>cn.soqi.img</artifactId><version>1.0-SNAPSHOT</version><dependencies><!--jai图片处理--><dependency><groupId>javax.media.jai</groupId><artifactId>com.springsource.javax.media.jai.codec</artifactId><version>1.1.3</version></dependency><dependency><groupId>javax.media</groupId><artifactId>jmf</artifactId><version>2.1.1e</version></dependency><!--jai图片处理end--><dependency><groupId>org.apache.ant</groupId><artifactId>ant</artifactId><version>1.10.1</version></dependency><dependency><groupId>org.apache.commons</groupId><artifactId>commons-lang3</artifactId><version>3.5</version></dependency></dependencies></project>

2 压缩成zip文件

package cn.soqi.img;/*** Created by user on 2017/5/8.*//*** ZIP文件压缩工具类** @author brozer* @email 798121446@qq.com* @create 2017-05-08 9:53*/
import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipOutputStream;import java.io.*;//使用org.apache.tools.zip这个就不会中文乱码//使用java.util.zip原生ZipOutputStream与ZipEntry会中文乱码//import java.util.zip.ZipOutputStream;
//import java.util.zip.ZipEntry;public class ZipCompress {static String filePath = "C:\\Users\\user\\Pictures\\png";//需要压缩的文件夹完整路径static String fileName = "png";//需要压缩的文件夹名static String outPath = "C:/Users/user/Desktop/zip.zip";//压缩完成后保存为Test.zip文件,名字随意public static void main(String args[]) throws Exception{OutputStream is = new FileOutputStream(outPath);//创建Test.zip文件// CheckedOutputStream cos = new CheckedOutputStream(is, new CRC32());//检查输出流,采用CRC32算法,保证文件的一致性ZipOutputStream zos = new ZipOutputStream(is);//创建zip文件的输出流zos.setEncoding("GBK");//设置编码,防止中文乱码File file = new File(filePath);//需要压缩的文件或文件夹对象ZipFile(zos,file);//压缩文件的具体实现函数zos.close();// cos.close();is.close();System.out.println("压缩完成");}//递归,获取需要压缩的文件夹下面的所有子文件,然后创建对应目录与文件,对文件进行压缩public static void ZipFile(ZipOutputStream zos,File file) throws Exception{if(file.isDirectory()){//创建压缩文件的目录结构String filePath=file.getPath();zos.putNextEntry(new ZipEntry(file.getPath().substring(file.getPath().indexOf(fileName))+File.separator));for(File f : file.listFiles()){ZipFile(zos,f);}}else{//打印输出正在压缩的文件System.out.println("正在压缩文件:"+file.getName());//创建压缩文件zos.putNextEntry(new ZipEntry(file.getPath().substring(file.getPath().indexOf(fileName))));//用字节方式读取源文件InputStream is = new FileInputStream(file.getPath());//创建一个缓存区BufferedInputStream bis = new BufferedInputStream(is);//字节数组,每次读取1024个字节byte [] b = new byte[1024];//循环读取,边读边写while(bis.read(b)!=-1){zos.write(b);//写入压缩文件}//关闭流bis.close();is.close();}}
}

3 解压Zip文件

package cn.soqi.img;/*** Created by user on 2017/5/8.*//*** Zip文件解压工具类** @author brozer* @email 798121446@qq.com* @create 2017-05-08 10:27*/
import org.apache.tools.zip.ZipEntry;
import org.apache.tools.zip.ZipFile;import java.io.*;
import java.util.Enumeration;//使用org.apache.tools.zip这个就不会中文乱码//使用java.util.zip原生ZipOutputStream与ZipEntry会中文乱码
//import java.util.zip.ZipEntry;
//import java.util.zip.ZipFile;public class ZipDeCompress
{static String zipPath = "C:/Users/user/Desktop/zip.zip";//需要解压的压缩文件static String outPath = "C:/Users/user/Desktop/";//解压完成后保存路径,记得"\\"结尾哈public static void deCompress(String zipPath,String outPath) throws Exception{zipPath=zipPath.replace("\\","/");outPath=outPath.replace("\\","/");if(!outPath.endsWith("/"))outPath=outPath+"/";ZipFile zipFile = new ZipFile(zipPath,"GBK");//压缩文件的实列,并设置编码//获取压缩文中的所以项for(Enumeration<ZipEntry> enumeration = zipFile.getEntries();enumeration.hasMoreElements();){ZipEntry zipEntry = enumeration.nextElement();//获取元素//排除空文件夹if(!zipEntry.getName().endsWith(File.separator)){System.out.println("正在解压文件:"+zipEntry.getName());//打印输出信息//创建解压目录String zipEntryStr=zipEntry.getName();String fileNamePart=zipEntry.getName().substring(zipEntry.getName().lastIndexOf("/")+1,zipEntry.getName().length());if(fileNamePart.trim().equals("")){File f = new File(outPath+zipEntry.getName().substring(0, zipEntry.getName().lastIndexOf("/")));//判断是否存在解压目录if(!f.exists()){f.mkdirs();//创建解压目录}}else {OutputStream os = new FileOutputStream(outPath + zipEntry.getName());//创建解压后的文件BufferedOutputStream bos = new BufferedOutputStream(os);//带缓的写出流InputStream is = zipFile.getInputStream(zipEntry);//读取元素RgbToCmyk.rgbToCmyk(is,outPath+zipEntry.getName()); //解压文件,同时转换生成对应的CMYK文件BufferedInputStream bis = new BufferedInputStream(is);//读取流的缓存流// CheckedInputStream cos = new CheckedInputStream(bis, new CRC32());//检查读取流,采用CRC32算法,保证文件的一致性byte[] b = new byte[1024];//字节数组,每次读取1024个字节//循环读取压缩文件的值while (bis.read(b) != -1) {bos.write(b);//写入到新文件}bis.close();// cos.close();is.close();bos.close();os.close();}}else{//如果为空文件夹,则创建该文件夹new File(outPath+zipEntry.getName()).mkdirs();}}System.out.println("解压完成");zipFile.close();}public static void main(String[] args) throws Exception {deCompress(zipPath,outPath);}
}

Zip文件压缩与解压相关推荐

  1. 7z001怎么解压在安卓手机上面_安卓zip文件压缩RAR解压手机下载-安卓zip文件压缩RAR解压v1.0最新版下载...

    安卓zip文件压缩RAR解压是一款非常好用的手机压缩解压缩神器,在安卓zip文件压缩RAR解压上我们可以看到很多的实用的功能,软件可以帮助我们更好的处理我们手机中的文件,感兴趣的朋友赶紧下载安卓zip ...

  2. java 操作Zip文件(压缩、解压、加密)

    java 操作Zip文件(压缩.解压.加密) 依赖:点击下载 package com.zxl.test;import net.lingala.zip4j.model.ZipParameters; im ...

  3. cordova 安卓文件多选_安卓zip文件压缩RAR解压软件下载-安卓zip文件压缩RAR解压下载v3.0.4安卓版...

    安卓zip文件压缩RAR解压是一款非常好用的手机压缩解压缩神器,在安卓zip文件压缩RAR解压上我们可以看到很多的实用的功能,软件可以帮助我们更好的处理我们手机中的文件,感兴趣的朋友赶紧下载安卓zip ...

  4. java zip加密压缩_Java解压和压缩带密码的zip文件过程详解

    前言 JDK自带的ZIP操作接口(java.util.zip包,请参看文章末尾的博客链接)并不支持密码,甚至也不支持中文文件名. 为了解决ZIP压缩文件的密码问题,在网上搜索良久,终于找到了winzi ...

  5. c# 文件压缩、解压及下载

    C#打包文件夹成zip格式(包括文件夹和子文件夹下的所有文件) C# 文件压缩与解压(ZIP格式) asp.net实现文件夹及文件压缩,并实现下载 转载于:https://www.cnblogs.co ...

  6. 7z文件压缩、解压 (7zTool.exe)

    工具下载 压缩为7z: 调用zip()函数 7z解压缩: 调用unzip()函数 using System; using System.Collections.Generic; using Syste ...

  7. linux把一个大文件压缩,linux大文件压缩及解压需要注意问题

    注意: 大文件压缩及解压需要在后台进行,如果要查看解压详情,就要输出重定向. 远程服务器,要防止网络断开连接,导致终端关闭,此时终端断开,即使后台进行,解压以及压缩也会停止.解决方法:在指令前加noh ...

  8. Linux文件压缩与解压命令

    1  .zip 格式压缩与解压 压缩命令 zip 压缩文件名 源文件 zip  -r   压缩目录名       源目录 解压命令 unzip 文件名 td@td-Lenovo-IdeaPad-Y41 ...

  9. 文件压缩、解压 (ZipTool.exe)

     工具下载 压缩: 调用zip()函数. 解压缩:调用unzip()函数 添加ZipTool类至应用中,即可实现文件压缩.解压逻辑. using System; using System.Collec ...

  10. 基于哈夫曼编码完成的文件压缩及解压

    这几天在较为认真的研究基于哈夫曼编码的文件压缩及解压,费了点时间,在这分享一下: 这里用链式结构,非顺序表结构: 文件压缩: 1.获取文件信息(这里采用TXT格式文本): 2.压缩文件: 3.写配置文 ...

最新文章

  1. mysql8.0登录不上去怎么回事_搞笑GIF:女朋友非要给我秀一手厨艺,不过这房子是怎么回事!...
  2. mysql myisam
  3. JS实现——俄罗斯方块
  4. yxy和志愿者小姐姐番外篇之大宝宝123追番记(补题,淘汰赛)
  5. Java多线程安全问题解决的两种方式代码案例
  6. 大厂疯传!Python+商业数据分析+数据可视化教程(附项目案例)
  7. python替代php,Python架构的PHP替代方案
  8. [VirtaulBox]网络连接设置
  9. java 蓝桥杯算法训练 求完数(题解)
  10. [转载] Python_正则表达式匹配Word文档
  11. vector中针对自定义类型的排序
  12. Javascript 细节散记
  13. Qt 实现多语言 国际化 翻译
  14. 2022泰迪杯数据挖掘挑战赛C题思路及赛后总结
  15. IDEA 2018下载及破解
  16. 机器学习中MinMaxScaler
  17. 计算机电子电路原理图,简单电路图入门-电路原理图入门知识图解
  18. 详解Linux内核红黑树算法的实现 http://blog.csdn.net/npy_lp/article/details/7420689
  19. python实现批量图片格式转换
  20. MacBook苹果系统下安装Windows XP双系统多分区问题解决

热门文章

  1. vmware卸载不干净,重装不了问题;装了虚拟机上不了网问题;装了虚拟机发现windows在cmd中ping不了虚拟机,虚拟机能ping的了windows;secureCRT或者filezilla连接
  2. 如何查询Linux软件安装源,Zypper——suse软件查询 安装 升级 与 软件源编辑
  3. 大气校正后的ndvi_ENVI下高分一号WFV数据FLAASH大气校正
  4. 摄动理论求解非线性单摆振动问题
  5. YAMLsnakeyaml简介
  6. 电阻屏和电容屏的区别
  7. 风尚云网学习-本地拖拽文件夹实现gitee码云代码文件提交
  8. Radius 协议介绍
  9. 职高计算机专业c语言_重庆市职业高中计算机专业C语言试题
  10. 【STM32F429的DSP教程】第18章 DSP控制函数-更好用的SIN,COS计算