`
morris
  • 浏览: 179096 次
  • 性别: 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();
    }

}


分享到:
评论

相关推荐

    linux压缩文件命令zip的用法.docx

    它可以将一个或多个文件压缩成一个 zip 文件,以便于文件传输和存储。 zip 命令选项 zip 命令提供了多种选项来控制压缩过程。以下是常用的选项: * -r:递归压缩目录,压缩指定目录下的所有文件和子目录。 * -m:...

    Java实现将多目录多层级文件打成ZIP包,以及解压ZIP包

    总结起来,Java通过Apache Commons Compress库提供的API,可以方便地实现多层级目录的文件压缩和解压。`FileUtils.java`类是这个功能的具体实现,它封装了上述的压缩和解压过程,使开发者能够轻松地在代码中调用这些...

    java多文件压缩成zip文件并实现下载

    在Java编程中,将多个文件压缩成一个ZIP文件并实现下载是一个常见的任务,尤其是在处理大量数据或文件分发时。这个过程涉及到Java的I/O流、压缩和HTTP响应的使用。下面将详细介绍如何实现这个功能。 首先,我们需要...

    php压缩zip文件

    在PHP开发中,经常需要对文件进行压缩操作,比如将一个或多个文件压缩成一个ZIP文件以供下载或其他处理。本篇将详细介绍如何利用PHP内置的`ZipArchive`类来实现这一功能。 #### 二、`ZipArchive`类简介 `Zip...

    C#压缩/解压ZIP文件带密码功能

    - `ZipFile.CreateFromDirectory(string sourceDirectoryName, string destinationArchiveFileName)`: 这个方法用于将指定目录下的所有文件和子目录压缩成一个ZIP文件。 - `ZipFile.AddFile(string fileName, ...

    C#.net ZIP文件压缩源代码

    这行代码会将指定的sourceDirectory目录及其所有内容压缩成一个ZIP文件。 2. **添加文件到ZIP** 如果需要压缩单个文件,可以使用ZipFile.ExtractToDirectory方法。不过,更灵活的方式是直接使用ZipArchive类。首先...

    python压缩文件夹内所有文件为zip文件的方法

    在日常工作中,经常需要将一个文件夹内的所有文件压缩成一个ZIP文件,以便于传输或存储。Python作为一种强大的编程语言,提供了多种方法来实现这一功能。下面详细介绍如何使用Python内置的`zipfile`模块来压缩指定...

    java将文件打包成ZIP压缩文件和解压缩zip文件

    我们先来看看如何将多个文件打包成一个ZIP文件。 1. **打包文件到ZIP** - 首先,创建一个`ZipOutputStream`对象,它需要一个`FileOutputStream`作为参数,指定输出的ZIP文件路径。 - 然后,对于每个要打包的文件...

    ZIP压缩和解压类

    1. `compress_files(src_dir, zip_file)`: 这个函数接收一个源目录`src_dir`和一个ZIP文件名`zip_file`,将目录下的所有文件和子目录压缩到指定的ZIP文件中。 2. `extract_zip(zip_file, dest_dir)`: 接收ZIP文件名...

    Java用Zip压缩多个文件实例源码

    这个示例会将指定的三个文件(file1.txt、file2.txt、file3.txt)压缩到一个名为"output.zip"的Zip文件中。 6. **注意事项**: - 确保在处理文件和流时正确地管理异常,以防止资源泄露。 - 如果要压缩的文件不在...

    封装Zip相关的工具类

    通过`ZipFile.CreateFromDirectory`方法,我们可以将一个目录及其所有内容压缩成一个Zip文件。同样,为了实现解压功能,`ZipFile.ExtractToDirectory`方法则用于将Zip文件内容解压到指定目录。 接下来,我们来探讨...

    Linux系统文件的压缩、打包与解开介绍

    zip 命令是 Linux 系统中最常用的压缩命令,它可以将多个文件压缩成一个文件,以节省硬盘空间。zip 命令的语法非常简单,只需要在后面加上压缩后的文件名,以及要压缩的文件即可。 zip 命令的参数非常多,在这里...

    java压缩工具类附zip4j_1.3.1.jar

    1. **compressFilesToZip**:这个方法接受一个文件或目录列表,然后将它们压缩成一个ZIP文件。开发者可以根据需求设置压缩级别、是否添加密码等选项。 2. **unzipFile**:此方法接收一个ZIP文件路径和目标解压缩...

    JAVA文件压缩与解压缩实践,java解压缩zip文件,Java源码.zip

    这段代码会将指定的文件(`sourceFilePath`)压缩成一个ZIP文件(`zipFilePath`)。`ZipOutputStream`用于创建ZIP文件,`ZipEntry`表示压缩文件的条目,通过`putNextEntry`方法添加到ZIP流中,然后读取原始文件并...

    java多个word文件合并.zip

    本文将详细介绍两种不同的方法来实现这一功能,结合给定的资源"java多个word文件合并.zip",我们将探讨如何使用JACOB库和Apache POI库来完成这个任务。 1. **JACOB库**: JACOB(Java COM Bridge)是一个开源的...

    linux_zip_压缩命令_解压命令

    `zip`命令主要用于将一个或多个文件压缩成一个.zip文件,其基本语法为: ``` zip [选项] &lt;压缩文件名&gt; [文件...] ``` 其中,`&lt;压缩文件名&gt;`是你想要创建的.zip文件的名字,`[文件...]`则是你想要压缩的文件列表。 #...

    Python解压缩zip文件原理与实践笔记.md

    ZIP 是一种广泛使用的文件压缩格式,它将多个文件打包成一个单独的压缩文件,从而有效地减少了存储空间的需求以及文件传输的时间。这种压缩方式非常适合在网络上传输大量文件或备份数据等场景。解压缩 ZIP 文件则是...

    PHP在线解、压缩ZIP文件程序 V1.0

    通过对整个ZIP文件中的每个条目调用此方法,可以将所有文件解压到指定的目录。 3. **在线压缩**:在线压缩涉及`addFile()`或`addFromString()`方法。前者用于添加服务器上的现有文件到ZIP,后者则允许直接从字符串...

    Java实现多文件压缩打包的方法

    这种方法可以将多个文件压缩成一个zip文件,以便于文件的存储和传输。下面我们将详细介绍Java实现多文件压缩打包的方法。 压缩多个文件成一个zip文件 要将多个文件压缩成一个zip文件,我们可以使用Java的...

    c#_压缩_zip_rar

    此方法用于将指定的文件夹内的所有文件压缩成一个ZIP文件。如果`zipFilePath`为空,则默认ZIP文件名为`dirPath + ".zip"`。 ##### 实现细节 - 检查`dirPath`是否为空或不存在。 - 获取文件夹内所有文件。 - 使用`...

Global site tag (gtag.js) - Google Analytics