java zip打包文件夹_java.util.zip压缩打包文件总结一:压缩文件及文件下面的文件夹...

package com.joyplus.test;

import java.io.File;

import java.io.FileInputStream;

import java.io.FileNotFoundException;

import java.io.FileOutputStream;

import java.io.IOException;

import java.io.InputStream;

import java.util.ArrayList;

import java.util.List;

import java.util.zip.ZipEntry;

import java.util.zip.ZipOutputStream;/**

* @author

* 将文件中所有文件及文件夹压缩

* source: 文件源的路径

* dest: 压缩文件存放路径*/

public classzipFiletest1 {//获取文件源中的所有文件

private List getSourceAllFiles(String from){

List fileList=new ArrayList<>();

File fromfile=new File(from);

File[] fileArr=fromfile.listFiles();for(File file : fileArr) {if(file.isFile()){

fileList.add(file);

}else{//利用递归之法,获取路径中子路径中的所有文件

fileList.addAll(getSourceAllFiles(file.getPath()));

}

}returnfileList;

}//得到文件在文件夹中的相对路径 保持原有结构 (也可以根据需求自己创建新的结构)

private String getRelName(String from,File f){

String name=null;

name=f.getAbsolutePath().replace(from+"\\", "");

name=name.replace("\\", "/");

System.out.println("文件相对路径是:"+name);returnname;

}//创建一个压缩文件,并存放到新的路径中

public void createZipFile(String from,String dest){

List fileList=getSourceAllFiles(from);

ZipOutputStream zout=null; //生成Zip输出流

try{

zout=new ZipOutputStream(new FileOutputStream(newFile(dest)));//将每个文件放入Zip流中

for(File f : fileList) {

InputStreamis=newFileInputStream(f);

String name=getRelName(from, f); //获取文件相对路径 保持文件原有结构

ZipEntry en=new ZipEntry(new File(from).getName()+"/"+name);

// ZipEntry ens=new ZipEntry(f.getName()); //这样只是把单独的文件压缩,不再有之前的结构

en.setSize(f.length());

zout.putNextEntry(en);

zout.setComment("test");//读取文件中的内容

int len=0;byte[] buffer=new byte[1024];while((len=is.read(buffer))!=-1){

zout.write(buffer,0,len);

}

zout.flush();is.close();

}

zout.close();

}catch(FileNotFoundException e) {

e.printStackTrace();

}catch(IOException e) {//TODO Auto-generated catch block

e.printStackTrace();

}finally{if(zout!=null){try{

zout.close();

}catch(IOException e) {

e.printStackTrace();

}

}

}

}public static voidmain(String[] args) {

zipFiletest1 test=newzipFiletest1();

test.createZipFile("D:\\EDI_MULIT_DOWNLOAD\\5fd0998a07c84d9d924076f64fb726a7", "D:\\sumZip\\co.zip");

}

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值