`
DavyJones2010
  • 浏览: 154067 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

Java SE: How to compress File(.zip)

阅读更多

1. Main Function

import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.Collection;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

import org.apache.log4j.Logger;

public class FileCompressUtil
{
    private static final Logger logger = Logger
            .getLogger(FileCompressUtil.class);

    private static final int BUFFER_SIZE = 2048;

    private FileCompressUtil()
    {
    }

    public static void compressFile(final Collection<String> fileNameList,
            final String zippedFileNameWithPath) throws IOException
    {
        logger.debug(String.format(
                "Start compressFile with fileList: [%s], target file: [%s]",
                fileNameList, zippedFileNameWithPath));

        ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(
                zippedFileNameWithPath));

        byte[] buffer = new byte[BUFFER_SIZE];
        for (String filePath : fileNameList)
        {
            ZipEntry e = new ZipEntry(filePath);
            zos.putNextEntry(e);
            logger.debug(String.format("Start compressFile with file: [%s]",
                    filePath));
            FileInputStream in = new FileInputStream(filePath);
            int len;
            while ((len = in.read(buffer)) > 0)
            {
                zos.write(buffer, 0, len);
            }
            in.close();
            zos.closeEntry();
            logger.debug(String.format("Finished compressFile with file: [%s]",
                    filePath));
        }

        zos.close();
        logger.debug(String.format(
                "Finished compressFile with fileList: [%s], target file: [%s]",
                fileNameList, zippedFileNameWithPath));
    }

    public static void compressAndDeleteOrigFile(final Collection<String> fileNameList,
            final String zippedFileNameWithPath) throws IOException
    {
        compressFile(fileNameList, zippedFileNameWithPath);
        for (String filePath : fileNameList)
        {
            File file = new File(filePath);
            file.delete();
        }
    }
}

    Test case:

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.Collection;

import org.junit.After;
import org.junit.Before;
import org.junit.Test;

public class FileCompressUtilTest
{
    private Collection<String> fileNameList;
    private String zipFileName;

    @Before
    public void setUp()
    {
        fileNameList = new ArrayList<String>();
        String filePath1 = "src/test/resources/aaa.xlsx";
        String filePath2 = "src/test/resources/bbb.xlsx";
        String filePath3 = "src/test/resources/ccc.xlsx";
        fileNameList.add(filePath1);
        fileNameList.add(filePath2);
        fileNameList.add(filePath3);

        zipFileName = "src/test/resources/test_compress.zip";
    }

    @Test
    public void testCompressFile() throws IOException
    {
        FileCompressUtil.compressFile(fileNameList, zipFileName);
    }

    @After
    public void tearDown()
    {
        new File(zipFileName).delete();
    }
}

 

分享到:
评论

相关推荐

    commons-compress-1.19-API文档-中文版.zip

    标签:apache、compress、commons、jar包、java、中文文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,...

    CompressFile.zip

    在本案例中,我们关注的是"CompressFile.zip",这是一个利用zlib 1.2.11版本的压缩库封装后的文件,可以用于对文件或文件夹进行压缩。 **Zlib库介绍:** Zlib是由Jean-loup Gailly和Mark Adler开发的一个自由且跨...

    commons-compress-1.20-API文档-中文版.zip

    标签:apache、commons、compress、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,...

    commons-compress-1.20-API文档-中英对照版.zip

    标签:apache、commons、compress、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准...

    commons-compress-1.21-API文档-中文版.zip

    标签:apache、commons、compress、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,...

    poi4.1.2以及所有依赖,源码,文档.zip

    org.apache.poi:poi:4.1.2 org.apache.poi:poi-ooxml:4.1.2 org.apache.poi:poi-ooxml-schemas:4.1.2 org.apache.xmlbeans:xmlbeans:3.1.0 ...commons-codec:commons-codec:...org.apache.commons:commons-compress:1.19

    commons-compress-1.4.1-API文档-中文版.zip

    标签:apache、compress、commons、jar包、java、中文文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,...

    基于java的文件压缩解压缩包 Commons Compress.zip

    以创建一个ZIP文件为例,你可以使用`org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream`类: ```java import org.apache.commons.compress.archivers.zip.ZipArchiveEntry; import org.apache....

    commons-compress-1.21-API文档-中英对照版.zip

    标签:apache、commons、compress、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准...

    commons-compress-1.18-API文档-中文版.zip

    包含翻译后的API文档:commons-compress-1.18-javadoc-API文档-中文(简体)版.zip 对应Maven信息:groupId:org.apache.commons,artifactId:commons-compress,version:1.18 使用方法:解压翻译后的API文档,用...

    commons-compress-1.8.1-API文档-中文版.zip

    标签:apache、commons、compress、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,...

    commons-compress-1.18-API文档-中英对照版.zip

    包含翻译后的API文档:commons-compress-1.18-javadoc-API文档-中文(简体)-英语-对照版.zip 对应Maven信息:groupId:org.apache.commons,artifactId:commons-compress,version:1.18 使用方法:解压翻译后的API...

    Linux下tar.bz2的解压文件命令

    linux下怎么解后缀名是gzip的文件?  1.以.a为扩展名的文件:  #tar xv file.a  2....  #uncompress file.Z ...  或 #compress -dc file.tar.Z | tar xvf –  6.以.tar.gz/.tgz为扩展名的文件:  #tar xvzf

    commons-compress-1.19-API文档-中英对照版.zip

    标签:apache、compress、commons、jar包、java、中英对照文档; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准...

    Caused by: java.lang.ClassNotFoundException: org.apache.commons.collections.Transformer异常

    在Java编程中,`ClassNotFoundException` 是一个常见的运行时异常,通常表示尝试加载某个类时,在类路径中找不到该类的定义。在这个特定的场景中,异常堆栈跟踪显示了 `Caused by: java.lang.ClassNotFoundException...

    commons-compress-1.16.1-API文档-中英对照版.zip

    标签:apache、commons、compress、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准...

    commons-compress-1.8.1-API文档-中英对照版.zip

    标签:apache、commons、compress、中英对照文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准...

    commons-compress-1.16.1-API文档-中文版.zip

    标签:apache、commons、compress、中文文档、jar包、java; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明精准翻译,...

    Apache Commons Compress ( commons-compress-1.15-bin.zip)

    import org.apache.commons.compress.archivers.zip.ZipArchiveOutputStream; // 创建Zip输出流 FileOutputStream fos = new FileOutputStream("output.zip"); ZipArchiveOutputStream zos = new ...

    commons-compress-1.4.1-API文档-中英对照版.zip

    标签:apache、compress、commons、jar包、java、API文档、中英对照版; 使用方法:解压翻译后的API文档,用浏览器打开“index.html”文件,即可纵览文档内容。 人性化翻译,文档中的代码和结构保持不变,注释和说明...

Global site tag (gtag.js) - Google Analytics