package tmp.MavenTest;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.Date;
import java.util.List;
import java.util.logging.Logger;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream; //定时将指定文件夹下的所有文件压缩
public class ZipFilesUtil { public static void compress(File f, String baseDir, ZipOutputStream zos){
if(!f.exists()){
System.out.println("待压缩的文件目录或文件"+f.getName()+"不存在");
return;
} File[] fs = f.listFiles();
BufferedInputStream bis = null;
//ZipOutputStream zos = null;
byte[] bufs = new byte[1024*10];
FileInputStream fis = null; try{
//zos = new ZipOutputStream(new FileOutputStream(zipFile));
for(int i=0; i<fs.length; i++){
String fName = fs[i].getName();
System.out.println("压缩:" + baseDir+fName);
if(fs[i].isFile()){
ZipEntry zipEntry = new ZipEntry(baseDir+fName);//
zos.putNextEntry(zipEntry);
//读取待压缩的文件并写进压缩包里
fis = new FileInputStream(fs[i]);
bis = new BufferedInputStream(fis, 1024*10);
int read = 0;
while((read=bis.read(bufs, 0, 1024*10))!=-1){
zos.write(bufs, 0, read);
}
//如果需要删除源文件,则需要执行下面2句
//fis.close();
//fs[i].delete();
}
else if(fs[i].isDirectory()){
compress(fs[i], baseDir+fName+"/", zos);
}
}//end for
}catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally{
//关闭流
try {
if(null!=bis)
bis.close();
//if(null!=zos)
//zos.close();
if(null!=fis)
fis.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
} } public static void main( String[] args ) throws ParseException
{ String sourceFilePath = "D:\\Eclipse_XJ\\work_space\\WebProbe\\downloadfiles"; File sourceDir = new File(sourceFilePath);
File zipFile = new File(sourceFilePath+".zip");
ZipOutputStream zos = null;
try {
zos = new ZipOutputStream(new FileOutputStream(zipFile));
String baseDir = "downloadfiles/";
compress(sourceDir, baseDir, zos);
} catch (FileNotFoundException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} finally{
if(zos!=null)
try {
zos.close();
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
} } 转载:https://blog.csdn.net/u010366748/article/details/78615004

java 将指定文件夹递归的进行zip打包压缩的更多相关文章

  1. Java 遍历指定文件夹及子文件夹下的文件

    Java 遍历指定文件夹及子文件夹下的文件 /** * 遍历指定文件夹及子文件夹下的文件 * * @author testcs_dn * @date 2014年12月12日下午2:33:49 * @p ...

  2. 利用Java实现指定文件夹下的照片以自定义格式移动

    前几天本猿的大学同学,一个漂亮的小姐姐工作时遇到了一个问题,她的需求是,在公司局域网的电脑上下载大量的图片重命名成指定得1.2.3.....以此类推,需要当天完成,我就临时给写了一个小demo. 我的 ...

  3. java拷贝指定文件夹下的指定文件类型

    例如:把C:\Windows\SysWOW64下的所有dll文件拷贝到C:\Users\Administrator\Desktop\64dll这个目录 package com.xiaostudy.co ...

  4. JAVA删除某个文件夹(递归删除文件夹的所有文件)

    /** * 递归删除文件夹下所有内容 最后删除该文件夹 * @param filePath 要删除的文件夹路径 * @return */ public boolean deleteFiles(Stri ...

  5. Java深度遍历文件夹(递归实现)

    package FileDemo; import java.io.File; public class DeepSearchDir { /** * @param args */ public stat ...

  6. java获取指定文件夹下的所有文件名

    package com.henu.util; import java.io.File; public class TakeFilePathAndName { public static void ma ...

  7. java基础 File与递归练习 使用文件过滤器筛选将指定文件夹下的小于200K的小文件获取并打印按层次打印(包括所有子文件夹的文件) 多层文件夹情况统计文件和文件夹的数量 统计已知类型的数量 未知类型的数量

    package com.swift.kuozhan; import java.io.File; import java.io.FileFilter; /*使用文件过滤器筛选将指定文件夹下的小于200K ...

  8. Java:<获取>、<删除>指定文件夹及里面所有文件

    工具类代码如下: 一.获取 public Class Test{ //定义全局变量,存放所有文件夹下的文档 List<String> fileList ; public List<S ...

  9. java实现批量修改指定文件夹下所有后缀名的文件为另外后缀名的代码

    java实现批量修改指定文件夹下所有后缀名的文件为另外后缀名的代码 作者:Vashon package com.ywx.batchrename; import java.io.File; import ...

随机推荐

  1. 使用nexus3.x搭建maven私服

    前言 好久之前就想搭建maven仓库了,一直拖到了现在,也就是懒得动,现在终于是要付诸行动了.网上查了不少资料,好多博客都是关于2.x的搭建,我下载的是最新版的nexus,好多教程已经不能使用,以此记 ...

  2. win10环境下适应pip安装autobahn提示认证失败的问题

    工作需要看一下websocket的东西,然后使用autobahn三方,但是使用pip install安装怎么也安装不上,问了很多网站,都说的升级pip,可是每一个鸡巴管用的,不过还是谢谢他们,现在我只 ...

  3. Convert Adjacency matrix into edgelist

    Convert Adjacency matrix into edgelist import numpy as np #read matrix without head. a = np.loadtxt( ...

  4. 【学习】数据规整化:清理、转换、合并、重塑(续)【pandas】

    @合并重叠数据 还有一种数据组合问题不能用简单的合并或连接运算来处理.比如说,你可能有索引全部或部分重叠的两个数据集 使用numpy的where函数,它用于表达一种矢量化的if - else a = ...

  5. Abp Area View文件无法调用@L方法

    需要再Area中对应的 web.config文件中 修改 <pages pageBaseType="zzz.Web.Views.zzzWebViewPageBase">

  6. Caused by: javax.persistence.NonUniqueResultException: result returns more than one elements

    Caused by: javax.persistence.NonUniqueResultException: result returns more than one elements at org. ...

  7. V-REP与C++初步通信测试

    打开vrep,在上方操作栏找到help选项打开,选择help topics.此时浏览器打开了vrep的操作手册user manual. 在user manual左侧目录中找到writing code ...

  8. inpu控件接受pipe的处理结果

    input控件绑定的变量,要接受用户的输入值,一般只要使用   [(ngModel)]  就可以. 但是,pipe处理结果如何反映到变量里去呢?不知道吧?嘿嘿 这样就可以了 :  <input ...

  9. PeopleSoft查看所有translate value

    下面sql可以列出PS中所有translate value SELECT FIELDNAME, FIELDVALUE, EFFDT, EFF_STATUS, XLATLONGNAME, XLATSHO ...

  10. spring boot常用注解小计

    @Async 需要执行异步方法时,在方法上加上@Async之后,底层使用多线程技术 .启动类上需要加上 @EnableAsync 注意:异步执行方法,不能与引用方法同在一个类里 @Transactio ...