今天主要跟大家介绍下如何通过代码把手机存储中的zip文件解压到指定的地方以及如何对很多文件或者文件夹进行压缩生成zip格式的压缩文件。

1.将某个Zip文件解压到指定目录下:

/*** 解压缩一个Zip格式的压缩文件** @param zipFile 需要解压缩文件* @param folderPath 解压缩的目标目录* @throws IOException 当解压缩过程出错时抛出*/public static void upZipFile(File zipFile, String folderPath) throws ZipException, IOException {File desDir = new File(folderPath);if (!desDir.exists()) {desDir.mkdirs();//mkdirs()无论是否父目录存在,都会创建目录成功!}ZipFile zf = new ZipFile(zipFile);for (Enumeration<?> entries = zf.entries(); entries.hasMoreElements();) {//压缩文件里面的每一个文件或者文件夹都对应一个ZipEntry,通过zf.entries()函数可以把所有的文件或者文件夹对应的ZipEntry都读出来ZipEntry entry = ((ZipEntry)entries.nextElement());String str = folderPath + File.separator + entry.getName();Log.i("zip", "file name = " + entry.getName());//打印出压缩文件中的所有文件或者文件夹名File desFile = new File(str);if (!desFile.exists()) {File fileParentDir = desFile.getParentFile();if (!fileParentDir.exists()) {fileParentDir.mkdirs();}if(entry.isDirectory()){//用来判断当前的ZipEntry对应的是文件还是文件夹desFile.mkdir();//mkdir()就是创建一个目录,但是前提是创建的目录的父目录一定要存在}else{desFile.createNewFile();InputStream in = zf.getInputStream(entry);OutputStream out = new FileOutputStream(desFile);byte buffer[] = new byte[1024 * 1024];int realLength;while ((realLength = in.read(buffer)) > 0) {out.write(buffer, 0, realLength);}in.close();out.close();}}}}

现假如手机存储根目录下有个sample.zip,通过调用upZipFile(new File(Environment.getExternalStorageDirectory().getAbsolutePath() + File.separatorChar + "sample.zip"), Environment.getExternalStorageDirectory().getAbsolutePath() + File.separatorChar + "sample");就会将文件解压到根目录的sample文件夹中,打印的log如下:

2.将文件夹压缩成压缩文件并放到指定位置

/*** 批量压缩文件(夹)** @param resFileList 要压缩的文件(夹)列表* @param zipFile 生成的压缩文件* @throws IOException 当压缩过程出错时抛出*/public static void zipFiles(Collection<File> resFileList, File zipFile) throws IOException {ZipOutputStream zipout = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(zipFile), 1024 * 1024));for (File resFile : resFileList) {zipFile(resFile, zipout, "");}zipout.close();}/*** 压缩文件** @param resFile 需要压缩的文件(夹)* @param zipout 压缩的目的文件* @param rootpath 压缩的文件路径* @throws FileNotFoundException 找不到文件时抛出* @throws IOException 当压缩过程出错时抛出*/private static void zipFile(File resFile, ZipOutputStream zipout, String rootpath)throws FileNotFoundException, IOException {rootpath = rootpath + (rootpath.trim().length() == 0 ? "" : File.separator)+ resFile.getName();if(!resFile.exists()){return;}if (resFile.isDirectory()) {File[] fileList = resFile.listFiles();for (File file : fileList) {zipFile(file, zipout, rootpath);}rootpath = rootpath + File.separatorChar;//添加File.separatorChar表示该ZipEntry对应的是文件夹,也就是此时调用ZipEntry.isDirectory()会返回truezipout.putNextEntry(new ZipEntry(rootpath));} else {byte buffer[] = new byte[1024 * 1024];BufferedInputStream in = new BufferedInputStream(new FileInputStream(resFile),BUFF_SIZE);zipout.putNextEntry(new ZipEntry(rootpath));int realLength;while ((realLength = in.read(buffer)) != -1) {zipout.write(buffer, 0, realLength);}in.close();zipout.flush();zipout.closeEntry();}}

如果有什么问题或者不对的地方随时欢迎留言,谢谢。。。

手机中的Zip格式文件解压和文件夹的压缩相关推荐

  1. Linux系统rar格式怎么解压,如何在linux下解压缩rar格式的文件压缩包

    这样方便解压,一般来说没有理由要用rar.关于 linux上unzip命令有空细讲, 本节讲下,如何让linux支持解压缩rar文件 一 .系统环境 1.1 系统环境 实验环境一: CentOS re ...

  2. 记录Zip4j压缩文件解压后文件显示异常

    场景:从金山云链接中读取文件流,将文件保存到本地,然后将本地文件压缩成zip包通过接口传给前端页面 现象:图片及word显示异常 原图: 解压后: 用到工具zip4j 直接上代码 第一步,从云链接中获 ...

  3. 【Android 安全】DEX 加密 ( 代理 Application 开发 | 解压 apk 文件 | 判定是否是第一次启动 | 递归删除文件操作 | 解压 Zip 文件操作 )

    文章目录 一.判定是否是第一次启动 二.递归删除文件操作 三.解压 Zip 文件操作 四.解压操作相关代码 参考博客 : [Android 安全]DEX 加密 ( 常用 Android 反编译工具 | ...

  4. java 7zip解压_Apache Commons Compress介绍-JAVA压缩解压7z文件

    7zip(下面简称7z)是由Igor Pavlov所开发的一种压缩格式,主要使用的压缩算法是LZMA/LZMA2.7z是一种压缩比非常高的格式,这与其压缩算法LZMA有直接关系,所以很多大文件都是用7 ...

  5. mac 命令行 解压7z文件_如何在Mac上快速压缩和解压文件?Mac上解压和压缩文件的方法...

    苹果mac电脑怎么压缩和解压文件?Mac电脑仅默认支持把文件压缩成zip格式,解压成zip.tar.gz,bz2等格式,有些操作需要安装第三方软件来完成,这篇文章为大家带来几种关于在Mac上解压和压缩 ...

  6. tar命令详解--tgz文件解压详细过程

    转载自: http://blog.chinaunix.net/xmlrpc.php?r=blog/article&uid=28811392&id=3598316 tar [-cxtzj ...

  7. Liux技巧总结之--解压各种文件

    .tar  解包:tar xvf FileName.tar 打包:tar cvf FileName.tar DirName (注:tar是打包,不是压缩!) --------------- .gz 解 ...

  8. 【Android 安全】DEX 加密 ( Java 工具开发 | 解压 apk 文件 | 加密生成 dex 文件 | 打包未签名 apk 文件 | 文件解压缩相关代码 )

    文章目录 一.解压 apk 文件 二.加密生成 dex 文件 三.打包未签名 apk 文件 四.完整代码示例 五.文件解压缩相关代码 六.执行结果 参考博客 : [Android 安全]DEX 加密 ...

  9. Mac解压rar文件工具

    Mac自带的归档压缩工具只能解压缩zip格式的压缩文件 解压rar文件就需要压缩工具了 推荐3款免费压缩工具: ①压缩工具The Unarchiver 官网:https://theunarchiver ...

最新文章

  1. qgis修复拓扑错误_深度 | QGIS开发与发布规则解析
  2. 怎样在两小时内搞定 OpenStack 部署?
  3. BCH期货要来了?这家公司想让BCH成为第二大加密货币
  4. 泰语7个元音变形_大概是最全的音标总结--元音部分
  5. Exchange队列优先级介绍和配置
  6. 【英语学习】【WOTD】apposite 释义/词源/示例
  7. 比特币区块链将分道扬镳、Libra苦难继续,2020区块链进入关键时期!
  8. POJ 3308 最少点集覆盖
  9. 智乃的树旋转(easy version)(思维+暴力)
  10. 读书笔记 之《Thinking in Java》(对象、集合、异常)
  11. 机器学习and深度学习学习资料
  12. GOOD AI Example GREAT AI Company
  13. 10分钟教你从零开始python_10分钟教你从零开始学python入门
  14. 动态爬虫之手机版QQ空间登录
  15. 常用元器件使用方法5:RS-232电平转换芯片SP3232EEN的使用方法
  16. 编译原理笔记05-语法分析自底向上
  17. excel 查找重复值方法
  18. 服务器间文件拷贝显示busy,网站解决和优化Server is too busy的一些方法
  19. FBReader 探究
  20. vue使用百度地图获取位置信息

热门文章

  1. 探讨Android6.0及以上系统APP常驻内存(保活)实现-争宠篇
  2. linux的系统监视器图片_国产操作系统UOS个人版测评:关山初度路犹长,已在路上仍需努力...
  3. 文化交流协会网站搭建模板
  4. 2019/08/14_用于新基因的生物信息学分析 (转载)
  5. 天基实业谈谈对投资理财的认识
  6. 北斗通信模块 北斗gps模块 北斗通信终端DTU
  7. Python爬虫(7)selenium3种弹窗定位后点击操作,解决点击登录被隐藏iframe无法点击的登陆问题
  8. Python networkx 绘制网络图简介
  9. WPF 让普通 CLR 属性支持 XAML 绑定(非依赖属性),这样 MarkupExtension 中定义的属性也能使用绑定了
  10. 关于Android性能优化的几点建议,通用流行框架大全