主要是运用ZipInputStream和ZipOutputStream实现

当中要注意,在文件解压时,ZipEntry中的名字是相对路径

File的方法createNewFile()只能在存在的目录下创建文件,所以在有多层目录时,先要mkdirs来创建目录,然后创建文件

代码如下

import java.io.*;
import java.util.zip.*;
import java.util.*;public class Main
{private void zip(ZipOutputStream out, File f, String base) throws Exception{if (f.isDirectory()) {File[] files = f.listFiles();base = (base.length() == 0 ? "" : base + "/");for (int i = 0; i < files.length; i++) {zip(out, files[i], base + files[i].getName());}} else {out.putNextEntry(new ZipEntry(base));BufferedInputStream in = new BufferedInputStream(new FileInputStream(f));int c;while ((c = in.read()) != -1) {out.write(c);}in.close();}}private void zip(File inputFileName, String zipFileName) throws Exception{ZipOutputStream out = new ZipOutputStream(new FileOutputStream(zipFileName));zip(out, inputFileName, "");out.close();}//压缩文件,inputFileName表示要压缩的文件(可以为目录),zipFileName表示压缩后的zip文件public void zip(String inputFileName, String zipFileName) throws Exception{zip(new File(inputFileName), zipFileName);}//解压,zipFileName表示待解压的zip文件,unzipDir表示解压后文件存放目录public void unzip(String zipFileName, String unzipDir) throws Exception{ZipInputStream in = new ZipInputStream(new FileInputStream(zipFileName));ZipEntry entry;while ((entry = in.getNextEntry()) != null) {String fileName = entry.getName();//有层级结构,就先创建目录String tmp;int index = fileName.lastIndexOf('/');if (index != -1) {tmp = fileName.substring(0, index);tmp = unzipDir + "/" + tmp;File f = new File(tmp);f.mkdirs();}//创建文件fileName = unzipDir + "/" + fileName;File file = new File(fileName);file.createNewFile();FileOutputStream out = new FileOutputStream(file);int c;while ((c = in.read()) != -1) {out.write(c);}out.close();}in.close();}public static void main(String[] args){try {String inputFileName = "F:\\test";String zipFileName = "F:\\test.zip";Main test = new Main();test.unzip(zipFileName, inputFileName);}catch (Exception e) {e.printStackTrace();}}
}

用ZipInputStream和ZipOutputStream实现文件及文件夹的压缩解压相关推荐

  1. sftp文件上传下载改名压缩解压

    希望能帮到大家,有疑问联系 package com.qb.modules.organtrans.interactive.jinshang;import java.io.File; import jav ...

  2. python压缩文件tar_python 实现tar文件压缩解压的实例详解

    python 实现tar文件压缩解压的实例详解 python 实现tar文件压缩解压的实例详解 压缩文件: import tarfile import os def tar(fname): t = t ...

  3. node.js文件的压缩解压

    node.js文件的压缩解压 流式读写文件 知识预知 例子 压缩解压文件 知识预知 压缩文件 解压文件 流式读写文件 第一步先要弄清楚为什么需要压缩和解压文件,这是因为文件太大了,我们需要将文件进行压 ...

  4. 通过C#代码 压缩/解压文件

    通过引用一DLL(ICSharpCode.dll)可以实现所述功能... 一.压缩文件 using System; using ICSharpCode.SharpZipLib; using ICSha ...

  5. C#压缩解压zip 文件

    我在做项目的时候需要将文件进行压缩和解压缩,于是就从http://www.icsharpcode.net下载了关于压缩和解压缩的源码,但是下载下来后,面对这么多的代码,一时不知如何下手.只好耐下心来, ...

  6. 使用C#压缩解压文件

    为了便于文件在网络中的传输和保存,通常将文件进行压缩操作,常用的压缩格式有rar.zip和7z,本文将介绍在C#中如何对这几种类型的文件进行压缩和解压,并提供一些在C#中解压缩文件的开源库. 在C#. ...

  7. 通过程序压缩/解压文件

    通过引用一DLL(ICSharpCode.dll)可以实现所述功能... 一.压缩文件 using System; using ICSharpCode.SharpZipLib; using ICSha ...

  8. 测试掌握的Linux解压,轻松掌握Linux压缩/解压文件的方法

    对于在Linux下解压大型的*.zip文件,相信大家一般都会通过使用winrar直接在smb中来进行解压的操作,虽然说最终可能能够解压但有时候会存在解压时间长或者网络原因出错等故障的情况出现.那么有没 ...

  9. 【PC工具】文件压缩解压工具winrar解压缩装机必备软件,winRAR5.70免费无广告

    微信关注 "DLGG创客DIY" 设为"星标",重磅干货,第一时间送达. 今天分享一个常用的压缩解压工具winrar. 为啥要搞这个无广告版呢(废话),总之网上 ...

最新文章

  1. python读取excel-python 读取 Excel
  2. linux 内核维护,Linux 4.18内核系列生命周期结束:用户需尽快更新内核
  3. QT学习:认识QMainWindow
  4. 推荐一位大佬,在腾讯工作十年
  5. python中添加高斯噪声_关于python:高斯噪声与高斯白噪声
  6. python写内存挂_编写高效内存Python代码的3个技巧
  7. Taro+react开发(47)taro中消息机制
  8. C++工作笔记-WM_KEYFIRST和WM_KEYDOWN的用法
  9. vue 引入外部less_Vue项目中引入外部文件的方法(css、js、less)
  10. Free Pascal初次体验(有亮点哦)
  11. 复杂美科技有限公司区块链专利
  12. GPT转换MBR,MBR转换GPT
  13. dc是什么游戏的简称_游戏缩写简称
  14. 1123581321递归算法java_【python 2】python 进阶
  15. 【youcans 的 OpenCV 例程200篇】153. 边缘检测之 DoG 算子
  16. 请更换备份电池 pos机_电签POS机实力碾压MPOS,请更换手中的蓝牙机!
  17. pinia和vuex的区别
  18. 【windows10】将路由器设置为交换机
  19. 算法:数字的排列组合问题
  20. leetcode之雪糕的最大数量(C++)

热门文章

  1. java 实现 DES加密 解密算法
  2. Eclipse Java注释模板设置详解,更改 ${user}和${date}
  3. 我的centos上安装 jdk+apache+tomcat+tomcatconnector+myql 安装道路
  4. 一款图像相关软件PhoXo
  5. 大学计算机基础课程报告python-Python程序设计习题解析(大学计算机基础教育规划教材)...
  6. python代码块所属关系的语法-天元高校邦数据科学通识课【Python基础语法】答案...
  7. python表白-520使用Python实现“我爱你”表白
  8. 笔记本电脑可以安装python吗-笔记本怎样安装Python64位的?
  9. python使用方法-六、python 方法的使用
  10. python爬虫软件-8个最高效的Python爬虫框架,你用过几个?