`
morris
  • 浏览: 176115 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

把指定目錄下面的所有文件壓縮成一個ZIP

    博客分类:
  • java
阅读更多
今天項目中用到了將word壓縮成zip文件供用戶下載,特記下以後備用

/**
 * function:把指定目錄下面的所有文件壓縮成一個ZIP
 * creator:morris
 * create date:2009/05/31
 * updater:
 * update date:
*/

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.ZipInputStream;
import java.util.zip.ZipOutputStream;

public class ZipFile {

    private String destinationDir = null;   // zip file dir
    private String fileName = null;         // zip file name
    private ZipOutputStream zout;           // zip class
    private ZipInputStream zin;

    public ZipFile(String temp1,String temp2){
        this.destinationDir = temp1;
        this.fileName=temp2;
    }

    public void newZip() throws FileNotFoundException {
        File temp=new File(this.destinationDir);
        temp.mkdirs();
        zout =
            new ZipOutputStream(
                new FileOutputStream(
                    this.destinationDir + "\\" + this.fileName));
    }

    //首先刪除該文件夾下所有文件
    public void deleteAllFile(File tempDir) throws Exception {
        File temp_file[] = null;
        temp_file = tempDir.listFiles();
        for (int i = 0; i < temp_file.length; i++) {
            if (temp_file[i].isFile()) {
            	temp_file[i].delete();
            }
        }
    }
    
    //壓縮文件夾下面的所有文件為ZIP文件
    public void createZipFile(File tempDir) throws Exception {
        File temp_file[] = null;
        byte temp[] = new byte[512];
        temp_file = tempDir.listFiles();
        for (int i = 0; i < temp_file.length; i++) {
            if (temp_file[i].isFile()) {
                FileInputStream in = new FileInputStream(temp_file[i]);
                String temp1=new String(temp_file[i].getAbsolutePath().getBytes("ISO8859-1"));
                if(!temp1.endsWith("zip")){
                    ZipEntry zip =
                        new ZipEntry(temp_file[i].getName());
                    zout.putNextEntry(zip);
                    int len = 0;
                    while ((len = in.read(temp)) != -1) {
                        zout.write(temp, 0, len);
                    }
                    zout.closeEntry();                	
                }
            }else{
                createZipFile(temp_file[i]);
            }
        }
    }

    public void closeZip() throws Exception{
        this.zout.close();
    }

    public void getZipFile(File tempDir){
        try{
            this.newZip();
            this.createZipFile(tempDir);
            this.closeZip();
        }catch(Exception e){
            e.printStackTrace();
        }
    }

    //解壓ZIP文件
    public void refreshZipFile() throws Exception{
        ZipEntry temp=null;
        FileOutputStream temp_file=null;
        byte btemp[]=new byte[256];
        zin=new ZipInputStream(new FileInputStream(this.destinationDir + "\\" + this.fileName));
        while((temp=zin.getNextEntry())!=null){
            File local=new File((new File(temp.getName())).getParent());
            local.mkdirs();
            temp_file=new FileOutputStream(temp.getName());
            while(zin.read(btemp)!=-1){
                temp_file.write(btemp);
            }
            temp_file.close();
            zin.closeEntry();
        }
        zin.close();
    }

}


分享到:
评论

相关推荐

    PB调用wfZip动态链接库

    软件简介:  采用了标准的Dll组件方式,可供多种程序调用。  本组件支持将多个文件快速的压缩成一个zip压缩文件。  本组件支持将指定zip压缩文件解压缩到指定目录。 Delphi、PB、VB原码说明

    python批量去除多个excel的图片.zip

    这个脚本的主要功能是遍历指定目录下的所有Excel文件,然后使用Python的openpyxl库打开每个Excel文件,查找并删除其中的所有图片。由于Excel文件中的图片可能嵌入在工作表的不同位置,脚本需要能够识别和处理这些...

    java多个word文件合并.zip

    实现将多个word文件合并成一个word文档,整理两种方法,所需资料比较齐全,已经过测试,可直接下载使用。

    linux tar命令详解

     这条命令是将所有.jpg的文件压缩成一个zip包 # unzip all.zip  这条命令是将all.zip中的所有文件解压出来  2)对于.rar  要在linux下处理.rar文件,需要安装RAR for Linux,能从网上下载,但要记住,RAR for ...

    Linux常用的解压缩命令

    上面这条命令就是将当前文件夹下的文件压缩成一个c.zip 注意当需要压缩的文件超过一个时,需要带上参数-r unzip -d /home/user/ c.zip 上面这条命令将c.zip解压后的文件放到/home/user目录下 tar tar指令是打包指令...

    【精品小工具】 开源0417更新Word文档批量生成工具,excel导入,类似邮件合并功能

    软件简介: Word文档批量生成工具是一款基于Python和PyQt5开发的桌面应用程序,...批量生成并压缩文件:用户可以点击“批量生成并压缩文件”按钮,将生成的Word文档批量压缩成一个ZIP文件,方便用户进行文件管理和传输

    东方光驱魔术师 v2003 2.5 官方版.zip

    东方光驱魔术师是一套虚拟光驱类的工具软件,它的工作原理是先在用户的计算机内虚拟一个虚拟光驱,将真实光盘的内容,压缩成一个虚拟光盘文件(*.DFI)存放在硬盘上,通过东方光驱魔术师来使用,操作与真实的光驱...

    PDG文件批量转换PDF

    点击“全部存入一个PDF文件”右边的打开文件夹图标(如果你比较喜欢每个图象转成一个PDF文件请相应的更改一下),在这里我们可以新建一个PDF文件,在这里我用的是FoxitPDFReader,我还没有找到如何用这个软件新建一...

    图片转PDF的好工具FreePic2Pdf

    可以将所有图像文件合并到一个PDF文件,也可以每个图像文件分别转换成一个PDF文件。 8. 支持通过接口自动生成多级书签(最多3000项)、分段页码、添加文本页、设置PDF的Document Properties。 9. 接口文件可以用于...

    FreePic2Pdf中文版

    可以将所有图像文件合并到一个PDF文件,也可以每个图像文件分别转换成一个PDF文件。 支持通过接口自动生成多级书签(最多3000项)、分段页码、添加文本页、设置PDF的Document Properties。 接口文件可以用于...

    JAVA上百实例源码以及开源项目

     Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、数字证书生成源码 2个目标文件 摘要:JAVA源码,...

    JAVA上百实例源码以及开源项目源代码

     Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、数字证书生成源码 2个目标文件 摘要:JAVA源码,...

    java源码包---java 源码 大量 实例

     Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、数字证书生成源码 2个目标文件 摘要:JAVA源码,...

    java源码包2

     Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、数字证书生成源码 2个目标文件 摘要:JAVA源码...

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    Java zip压缩包查看程序源码 1个目标文件 摘要:Java源码,文件操作,压缩包查看 Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码...

    成百上千个Java 源码DEMO 3(1-4是独立压缩包)

    Java zip压缩包查看程序源码 1个目标文件 摘要:Java源码,文件操作,压缩包查看 Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码...

    网管教程 从入门到精通软件篇.txt

    如果未指定文件系统,将使用现有的文件系统格式。  Map  显示驱动器号与物理设备名称的映射。该信息在运行 fixboot 和 fixmbr 命令时非常有用。  map 命令仅在使用故障恢复控制台时才可用。  Map [ arc]  ...

    java源码包3

     Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、数字证书生成源码 2个目标文件 摘要:JAVA源码...

Global site tag (gtag.js) - Google Analytics