public class FileUtil {
/**
* 压缩文件-File
* @param out zip流
* @param srcFiles 要压缩的文件
* @param path 相对路径
* @param isParent 是否包含父路径: true包含,false不包含
* @throws IOException
*/
public static void ZipFiles(ZipOutputStream out, File srcFiles, String path, boolean isParent) throws IOException {
  path = path.replaceAll("\\*", "/");
  byte[] buf = new byte[1024];
  if (srcFiles.isDirectory()) {
    File[] files = srcFiles.listFiles();
    String srcPath = srcFiles.getName();
    srcPath = srcPath.replaceAll("\\*", "/");
    if (!srcPath.endsWith("/")) {
      srcPath += "/";
    }
    out.putNextEntry(new ZipEntry(path + srcPath));
    for (int i = 0; i < files.length; i++) {
      System.out.println(files[i].getParent());
      ZipFiles(out, files[i], path + srcPath, isParent);
    }
  } else {
    if (isParent) {
      String parentPath = srcFiles.getParent();
      int index = parentPath.lastIndexOf("\\");
      String parentName = parentPath.substring(index + 1);
      path = parentName + "\\";
    }
    FileInputStream in = new FileInputStream(srcFiles);
    out.putNextEntry(new ZipEntry(path + srcFiles.getName()));
    int len;
    while ((len = in.read(buf)) > 0) {
      out.write(buf, 0, len);
    }
    out.closeEntry();
    in.close();
  }
  }
}

测试例子

public static void main(String[] args) throws IOException {
ZipOutputStream zip = new ZipOutputStream(new FileOutputStream("D:\\test\\shaomch.zip"));
File file1 = new File("D:\\test\\classPath.txt");
FileUtil.ZipFiles(zip, file1, "", false);
File file2 = new File("D:\\test\\name.txt");
FileUtil.ZipFiles(zip, file2, "", false);
File file3 = new File("D:\\test\\shao\\3\\0302移动端升级功能验证.xlsx");
FileUtil.ZipFiles(zip, file3, "", true);
zip.close();
}

java zip压缩文件和文件夹的更多相关文章

  1. Java zip 压缩 文件夹删除,移动,重命名,复制

    FileUtil.java import java.io.*; import java.util.List; import java.util.zip.ZipEntry; import java.ut ...

  2. java ZIP压缩文件

    问题描述:     使用java ZIP压缩文件和目录 问题解决:     (1)单个文件压缩 注:     以上是实现单个文件写入压缩包的代码,注意其中主要是在ZipOutStream流对象中创建Z ...

  3. Java ZIP压缩和解压缩文件(解决中文文件名乱码问题)

    Java ZIP压缩和解压缩文件(解决中文文件名乱码问题) 学习了:http://www.tuicool.com/articles/V7BBvy 引用原文: JDK中自带的ZipOutputStrea ...

  4. java zip 压缩文件

    zip压缩:ZipOutputStream.ZipFile.ZipInputStream 三个类的作用 一段 java  zip  压缩的代码: File dir = new File("C ...

  5. java zip 压缩与解压

    java zip 压缩与解压 import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java. ...

  6. Java Zip压缩

    1.压缩文件或整个目录 // ZipCompression.java import java.io.File;import java.io.FileInputStream;import java.io ...

  7. java如何压缩多个文件到压缩包,并下载到浏览器?

    java压缩多个文件到压缩包,并下载到浏览器   解决方法: 完整的方法如下,很简单,亲试有效,极力推荐. 我是以流作为文件,而不是file,循环把所有pdf文件压缩到pdf.zip压缩包中. 1.前 ...

  8. Java Zip压缩实现

    最近在自学javaWeb,先复习一下java,把还给老师的东西再找回来(知识如果不用很快就会忘记啊).. 今天看到了zip压缩,决定要整理一下. java将有关zip压缩的内容都封装在java.uti ...

  9. Java ZIP压缩和解压缩文件并兼容linux

    JDK中自带的ZipOutputStream在压缩文件时,如果文件名中有中文,则压缩后的 zip文件打开时发现中文文件名变成乱码. 解决的方法是使用apache-ant-zip.jar包(见附件)中的 ...

随机推荐

  1. 2019年最新 Python 模拟登录知乎 支持验证码

    知乎的登录页面已经改版多次,加强了身份验证,网络上大部分模拟登录均已失效,所以我重写了一份完整的,并实现了提交验证码 (包括中文验证码),本文我对分析过程和代码进行步骤分解,完整的代码请见末尾 Git ...

  2. centos7 安装nodejs 最新版

    笔者在安装时,node为11.0.0版本.这里以11版本为例,以后更新,安装步骤时一致的. 下载node安装包到指定目录 wget https://npm.taobao.org/mirrors/nod ...

  3. Selenium启动项参数设置

    再Selenium中使用不同的Webdriver可能会有不一样的方法,有些相同的操作会得到不同的结果, 本文主要介绍的是Chrome()的使用方法. 其他的Webdriver可以参考官方文档 Chro ...

  4. JMeter安装JSON Path Extractor插件

    下载地址:https://jmeter-plugins.org/wiki/PluginsManager/ 先下载jmeter-plugins-manager-1.3.jar,点击下图中的JAR fil ...

  5. Spring Boot SpringSecurity5 身份验证

    对于没有访问权限的用户需要转到登录表单页面.要实现访问控制的方法多种多样,可以通过Aop.拦截器实现,也可以通过框架实现(如:Apache Shiro.Spring Security). pom.xm ...

  6. C Looooops(poj 2115)

    大致题意: 对于C的for(i=A ; i!=B ;i +=C)循环语句,问在k位存储系统中循环几次才会结束. 若在有限次内结束,则输出循环次数. 否则输出死循环. 解题思路: 题意不难理解,只是利用 ...

  7. c/s委托练习

    今天玩了玩C/S开发,也随便练习了很久不用的委托 父窗体中写的代码 #region 委托与事件传递    public delegate void TextChangedHandler(string ...

  8. UVa10491 Cows and Cars

    #include<iostream> #include<cstdio> #include<algorithm> int main(){ double a,b,c; ...

  9. 手动实现jQuery的toggle()效果

    有时候我们希望实现toggle()切换效果,但是切换的同时需要完成一些其他要做的事情.所以我们需要对jQuery的toggle()函数进行改造. 下面好test2()函数就是一个实现toggle效果的 ...

  10. docker使用 命令

    Dockerfile FROM golang:alpine3. AS build-stage WORKDIR /go/src/mypro.exportReport COPY . . RUN go bu ...