把文件夹下的所有文件打包成一个zip包

代码如下:

一、打包过程:

所需要jar包:安装上Java环境就可以了

package filetozip;

import java.io.BufferedInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

public class FilesToZip {
    public boolean fileToZips(String sourceFilePath,String zipFilePath,String zipFileName) throws Exception{
        boolean flag=false;
        BufferedInputStream bis=null;
        ZipOutputStream zos=null;
        File sourceFiles = new File(sourceFilePath);
        if(sourceFiles.exists()==false){
            System.out.println("待压缩目录"+sourceFiles+"不存在...");
        }else{
            //判断待压缩文件是否已经被压缩过 zipFiles--->fos--->zos设置压缩包名称
            File zipFiles = new File(zipFilePath+"//"+zipFileName+".zip");
            if(zipFiles.exists()){
                System.out.println(zipFilePath+"目录下已经存在"+zipFileName+".zip"+"压缩包...");
            }else {
                //得到指定目录下的所有文件夹,注意返回的File数组,不是String数组
                File[] sourceFileList = sourceFiles.listFiles();
                if(null==sourceFileList||sourceFileList.length<1){
                    System.out.println(sourceFilePath+"目录下没有待压缩的文件...");
                }else {
                    FileOutputStream fos = new FileOutputStream(zipFiles);
                    zos = new ZipOutputStream(fos);
                    byte[] bys=new byte[1024*10];
                    for(int i=0;i<sourceFileList.length;i++){
                        //fileName:指定目录下的文件夹的名称或文件的名称
                        String fileName = sourceFileList[i].getName();
                        //创建zip实体,并添加进压缩包  ,zipEntry的值就是fileName的值
                        ZipEntry zipEntry = new ZipEntry(sourceFileList[i].getName());
                        //添加进压缩包
                        zos.putNextEntry(zipEntry);
                        //读取待压缩文件,并添加进压缩包,FileInputStream读的是一个具体文件,不是一个文件夹
                        FileInputStream fis = new FileInputStream(sourceFileList[i]);
                        //如果遇到bis存储空间不够,可以把1024*10的限制取消。
                        bis = new BufferedInputStream(fis, 1024*10);
                        //记录当前读取的字节数
                        int reads=0;
                        while((reads=bis.read(bys, 0, 1024*10))!=-1){
                            zos.write(bys, 0, reads);
                        }
                        
                    }
                    flag=true;
                    //特别注意,如果不关闭流端口,可能会导致压缩打包不成功!
                    if(null!=bis){
                        bis.close();
                    }
                    if(null!=zos){
                        zos.close();
                    }
                }
            }
            
        }
        return flag;
        
    }

}

二、测试:

package filetozip;

public class TestMian {
    public static void main(String[] args) throws Exception {
        FilesToZip ftz = new FilesToZip();
        //待打包文件所在的目录
        String sourceFilePath="D://test//0000//000//001";
        //打好的压缩包存放的位置
        String zipFilePath="D://test//zipRes";
        //压缩包的名称
        String zipFileName="2017-05-28";
        boolean result = ftz.fileToZips(sourceFilePath, zipFilePath, zipFileName);
        if(result){
            System.out.println("压缩完成...");
        }else {
            System.out.println("压缩失败...");
        }
    }

}
 

转载于:https://my.oschina.net/u/3197158/blog/910892

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值