文档章节

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

爱运动的小乌龟
 爱运动的小乌龟
发布于 2017/05/28 20:04
字数 485
阅读 16
收藏 0

代码如下:

一、打包过程:

所需要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("压缩失败...");
        }
    }

}
 

© 著作权归作者所有

爱运动的小乌龟
粉丝 3
博文 150
码字总数 43979
作品 0
朝阳
私信 提问
Linux/centos/redhat下各种压缩解压缩方式详解

1.zip命令 zip -r myfile.zip ./ 将当前目录下的所有文件和文件夹全部压缩成myfile.zip文件,-r表示递归压缩子目录下所有文件. 2.unzip unzip -o -d /root/ myfile.zip 把myfile.zip文件解压...

小星星程序员
2015/03/16
103
0
四周第五次课(1月6日)

6.5 zip压缩工具支持目录压缩,把目录拷贝到d6z下压缩文件,没有命令需要安装一下压缩2.txt压缩目录,目录里不仅有目录还有文件压缩完后原来的文件不删除解压目录unzipunzip命令没有需要安装...

cwliang
2018/01/07
0
0
Linux常用命令(仅考虑个人情况)

有待完善: 查找文件:号为通配符? find / -name "libcgic" 库libcgic.a路径: /work/RT288xSDK/RT288xSDK/source/lib/lib/libcgic.a 头文件cgic.h路径: /work/RT288xSDK/RT288xSDK/source......

唧唧帝
2014/01/15
280
0
2018-1-6 Linux学习笔记

6.5 zip压缩工具 语法:zip 1.txt.zip 1.txtzip支持压缩文件夹,比如:zip -r 123.zip 123/ #选项r为递归处理,不加只压缩123/本身,不包括其下的文件和子目录 解压缩:unzip 1.txt.zip将解压缩结...

XiaoluHuang
2018/01/07
0
0
工具类-解压zip包和压缩照片

由于项目目前系统在服务器上的资料占用空间太大。查了原因之后发现时因为照片没有经过压缩。但是所有照片都在zip包里,比较犯愁。于是写了如下的工具类。主要实现的功能是:扫描一个文件夹下...

明舞
2014/07/31
161
0

没有更多内容

加载失败,请刷新页面

加载更多

二叉树交换左右子树

树的实现类 public class TreeNode {public int val;public TreeNode left;public TreeNode right;public TreeNode(int x) {val = x;}public TreeNode(int val, TreeN......

jxlgzwh
25分钟前
11
0
在Workstation 15上测试vShere 6.7+vCenter Server

想学习vSphere,最好能在自己的电脑上搭建相应的学习环境,如下图所示: _________________________________ | ...

大别阿郎
28分钟前
8
0
centos7上部署vnc服务器并实现远程桌面

centos7上部署vnc服务器并实现远程桌面 centos7上进行一下操作 [root@localhost ~]# yum install tigervnc-server -y#安装vnc服务器 Loaded plugins: fastestmirror, langpacks base | 3.6 ......

恩多
31分钟前
13
0
CSS--表格

一、表格的常用属性 1、边距属性padding(td的mrgin无效) 2、边框属性border 3、尺寸属性 width height 4、文本格式 font-* text-* line-height 5、背景属性 颜色,图片,渐变 二、特有属性...

wytao1995
48分钟前
5
0
zookeeper - leader选举

让我们分析如何在ZooKeeper集合中选举leader节点。考虑一个集群中有N个节点。leader选举的过程如下: 所有节点创建具有相同路径 /app/leader_election/guid_ 的顺序、临时节点。 ZooKeeper集...

Canaan_
59分钟前
8
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部