`

Java 中使用gzip压缩、解压缩目录

 
阅读更多
/**
     * 压缩文件或目录<br/>
     * 将文件或者目录压缩为zip格式的压缩文件
     *
     * @param commpressedFile 压缩后的文件
     * @param preCommpressFile   需要压缩的文件或目录路径
     * @return true | false
     */
    public static boolean compress(String commpressedFile, String preCommpressFile)
    {
        boolean isSucc = true;
        File inputFile = new File(preCommpressFile);
        ZipOutputStream out;
        try
        {
            out = new ZipOutputStream(new FileOutputStream(commpressedFile));
            log.debug("begin to compress file... ...");
            compress(out, inputFile, inputFile.getName(), progess);
            log.debug("compressed successful");
            out.close();
        }
        catch (Exception e)
        {
            isSucc = false;
            log.error(e.toString(), e);
        }
        return isSucc;
    }
    
    /**
     * 递归压缩文件夹下的所有文件
     *
     * @param out 输出流
     * @param file 需要压缩的文件
     * @param base 压缩后文件的父目录
     * @throws IOException
     */
    private static void compress(ZipOutputStream out, File file, String base)
            throws IOException
    {
        log.debug("compressing: " + file.getName() + "... ...");
        if (file.isDirectory())
        {
            File[] fs = file.listFiles();
            base += "/";
            log.debug("add folder: " + file.getName());
            out.putNextEntry(new ZipEntry(base)); // 生成相应的目录
            for (int i = 0; i < fs.length; i++)
            {
                // 对本目录下的所有文件对象递归遍历,逐个压缩
                compress(out, fs[i], base + fs[i].getName(), progess);
            }
            
        }
        else
        {
            log.debug("add file: " + file.getName());
            out.putNextEntry(new ZipEntry(base));
            InputStream is = new FileInputStream(file);
            byte[] buf = new byte[1024];
            int len = 0;
            while ((len = is.read(buf)) != -1)
            {
                out.write(buf, 0, len);
            }
            is.close();
        }
    }
    
    /**
     * 解压缩文件<br/>
     * 解压缩zip格式的文件
     *
     * @param zipFile 需要解压缩的文件
     * @param desPath 解压后保存的目录
     */
    public static void decompress(String zipFile, String desPath)
    {
        // 建立输出流,用于将从压缩文件中读出的文件流写入到磁盘
        OutputStream out = null;
        // 建立输入流,用于从压缩文件中读出文件
        ZipInputStream is;
        File dir = new File(desPath);
        dir.mkdirs();
        try
        {
            is = new ZipInputStream(new FileInputStream(zipFile));
            ZipEntry entry = null;
            while ((entry = is.getNextEntry()) != null)
            {
                log.debug("decompressing :" + entry.getName() + "... ...");
                File f = new File(dir, entry.getName());
                if (entry.isDirectory())
                {
                    log.debug("add filder :" + f.getName());
                    f.mkdir();
                }
                else
                {
                    log.debug("add file :" + f.getName());
                    // 根据压缩文件中读出的文件名称新建文件
                    out = new FileOutputStream(f);
                    byte[] buf = new byte[1024];
                    int len = 0;
                    while ((len = is.read(buf)) != -1)
                    {
                        out.write(buf, 0, len);
                    }
                    out.close();
                }
            }
            
            is.close();
        }
        catch (Exception e)
        {
            log.error(e.toString(), e);
        }
    }
分享到:
评论

相关推荐

    vc中用来解压缩Java中gzip压缩的数据的解压缩库

    本篇文章将详细介绍如何在VC中利用解压缩库来处理Java中gzip压缩的数据。 gzip是一种广泛使用的数据压缩格式,主要应用于网络传输,它基于DEFLATE算法,可以有效地减小文件大小,从而提高传输效率。Java中提供了...

    JAVA文件压缩与解压缩实践(源代码+论文)

    4. **源代码实现**:实践中提供的源代码展示了如何使用Java API来实现文件和目录的压缩与解压缩。这可能包括读取文件,创建压缩流,写入数据到压缩流,以及从压缩流中读取和写入文件等步骤。 5. **文件操作**:在...

    Java用GZIP压缩解压文件.rar

    一个Java随书实例:用GZIP压缩解压文件,从源文件得到文件输入流,得到目标文件输出流,得到压缩输出流,设定读入缓冲区尺寸,弹出文件选择器,并判断是否点击了打开按钮,判断事件来自于哪个按钮,用于选择解压和...

    Java用GZIP压缩解压文件源码

    在本文中,我们将深入探讨如何使用Java实现GZIP压缩和解压缩文件的源码。 首先,我们需要引入Java的`java.util.zip`包,这个包包含了处理GZIP和其他压缩格式所需的类。在Java中,`GZIPOutputStream`和`...

    pako gzip 压缩和解压缩(支持中文)

    在提供的压缩包中,包含了一个名为`webserviceTest.html`的文件,这可能是一个演示如何在实际Web服务中使用pako进行gzip压缩和解压缩的示例。此外,`js`文件夹可能包含了pako库和其他相关的JavaScript代码。通过查看...

    Java用GZIP压缩解压文件

    本篇文章将深入探讨如何在Java中使用GZIP进行文件的压缩与解压缩操作。 首先,我们需要了解Java中的`java.util.zip`包,这个包提供了对ZIP和GZIP格式的支持。在GZIP操作中,我们主要会用到`GZIPOutputStream`和`...

    Java压缩技术(四) GZIP——Java原生实现

    总的来说,Java提供的GZIP压缩功能是强大且易用的,`GZipUtils`类的实现可以帮助我们更便捷地在项目中使用这些功能。而`GZipUtilsTest`则确保了这些功能的正确性,使得我们在实际应用中可以更加放心。

    使用Java API进行tar.gz文件及文件夹压缩解压缩.docx

    ame()); tOut.putArchiveEntry(tarEntry);...通过引入该库,我们可以轻松地在 Java 程序中实现文件和文件夹的压缩与解压缩功能。在实际开发中,注意错误处理、资源管理以及安全性等方面,以确保程序的健壮性和安全性。

    Java用GZIP压缩解压文件.7z

    本篇文章将深入探讨如何在Java中使用GZIP进行文件的压缩和解压缩操作。 首先,我们要导入相关的Java.IO和Java.util.zip库,它们提供了对GZIP文件格式的支持: ```java import java.io.*; import java.util.zip.*; ...

    基于Java的用GZIP压缩解压文件.zip

    首先,我们要了解Java中的`java.util.zip.GZIPOutputStream`和`java.util.zip.GZIPInputStream`类,这两个类是Java标准库提供的用于GZIP压缩和解压缩的核心工具。`GZIPOutputStream`用于写入压缩数据,而`...

    基于java的用GZIP压缩解压文件.zip

    这个压缩包"基于java的用GZIP压缩解压文件.zip"包含了一个或多个示例,展示了如何在Java环境中利用GZIP进行文件操作。以下是关于Java中GZIP压缩和解压缩文件的相关知识点: 1. **GZIPOutputStream**:这是Java标准...

    文件GZip压缩AES加密反向解密解压缩代码和jar

    本资源包“文件GZip压缩AES加密反向解密解压缩代码和jar”提供了完整的Java实现,使得开发者能够方便地对文件进行GZip压缩、AES加密,以及后续的解密和解压缩操作。下面将详细解释这些技术及其应用。 首先,GZip...

    JAVA GZIP压缩案例附带httpwatch监测工具以及使用说明

    在本文中,我们将深入探讨Java中的GZIP压缩技术,并结合HTTPWatch监测工具,理解其在实际网络请求中的应用。GZIP是一种广泛使用的数据压缩格式,它可以在网络传输中有效地减小文件大小,从而提高加载速度,减少...

    22、MapReduce使用Gzip压缩、Snappy压缩和Lzo压缩算法写文件和读取相应的文件

    Lzo压缩速度快,但解压缩速度较慢,通常在需要快速写入数据而不太关心读取性能的场景下使用。 压缩算法的选择取决于具体的应用需求,如压缩效率、解压速度以及对压缩比的需求。在实际应用中,可能还需要考虑其他...

    java实现压缩与解压缩

    Java 实现压缩与解压缩是Java编程中常见的一项任务,主要涉及到I/O流处理和压缩库的使用。本文将深入探讨如何使用Java进行文件的压缩和解压缩操作,以及涉及的相关知识点。 首先,Java标准库提供了`java.util.zip`...

    GZIP解压缩.rar

    使用易语言的GZIP解压缩源码,我们可以将接收到的GZIP数据还原成原始内容。 在易语言中,解压缩GZIP文件通常涉及以下几个步骤: 1. 打开GZIP文件:使用易语言的文件操作命令打开.gz文件,并读取其内容到内存中。 ...

Global site tag (gtag.js) - Google Analytics