`
conquer0
  • 浏览: 78432 次
  • 性别: Icon_minigender_1
  • 来自: 广州
文章分类
社区版块
存档分类
最新评论

压缩与解压缩类二

 
阅读更多
    /**
     * 取压缩目录内文件逐一进行压缩
     * @param baseDir 需压缩目录根路径
     * @param currentZipDir 需压缩目录中的目录
     * @param zos 写入压缩文件的输出流
     */
    private static void writeZip(String baseDir, String currentZipDir,
            ZipOutputStream zos)
    {
        File curFile = new File(currentZipDir);
        File[] fileList = curFile.listFiles();
        try
        {
            for (int i = 0; i < fileList.length; i++)
            {
                File zipfile = fileList[i];
               
                // 取得相对路径
                String relativePath = getRelativePath(baseDir, zipfile);
                ZipEntry zentry = new ZipEntry(relativePath);
                zentry.setSize(zipfile.length());
                zentry.setTime(zipfile.lastModified());
                // System.out.print("ziping: " + relativePath);
                // 将ZipEntry加到zos中,再写入实际的文件内容
                zos.putNextEntry(zentry);
               
                if (zipfile.isDirectory())
                {
                    // 如果是目录,则继续递归压缩
                    writeZip(baseDir, zipfile.getCanonicalPath(), zos);
                }
                else
                {
                    // 如果是文件,则写入其内容
                    InputStream is = new BufferedInputStream(
                            new FileInputStream(zipfile));
                    writeFile(is, zos);
                    is.close();
                }
            }
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }
    }
   
    /**
     * 从输入流读入的内容写入输出流
     * @param in 输入流
     * @param out 输出流
     * @throws IOException IO异常
     */
    public static void writeFile(final InputStream in, final OutputStream out)
            throws IOException
    {
        final int diskCacheSize = 1024 * 4;
        // 4K容量的数据缓冲区,因为硬盘存取是以4K一簇为单位的
        final byte[] buffer = new byte[diskCacheSize];
       
        // 开始复制数据
        int readLen = 0;
        while ((readLen = in.read(buffer)) > 0)
        {
            out.write(buffer, 0, readLen);
        }
    }
分享到:
评论

相关推荐

    文件压缩解压缩

    在IT行业中,文件压缩与解压缩是日常工作中常见的操作,特别是在数据传输、存储优化和软件分发等领域。这里我们主要探讨的是一个简单的工具类,它支持zip、rar、tar等多种格式的压缩和解压缩功能,并且经过实际测试...

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

    在Java编程语言中,文件的压缩与解压缩是常见的数据处理操作,特别是在数据传输、存储优化和备份场景中。本实践项目围绕这个主题展开,包括源代码和相关的论文,为学习者提供了深入理解和应用Java压缩库的机会。以下...

    C++ 压缩解压缩库

    在给定的标题“C++ 压缩解压缩库”中,我们可以推断这是一个针对C++语言的库,专注于文件或数据的压缩与解压缩功能。描述提到这是为VS2012版本编译的,意味着它可能使用了Visual Studio 2012的编译环境,并且库已经...

    哈夫曼压缩与解压缩源码.zip

    哈夫曼压缩与解压缩源码.zip哈夫曼压缩与解压缩源码.zip哈夫曼压缩与解压缩源码.zip哈夫曼压缩与解压缩源码.zip哈夫曼压缩与解压缩源码.zip哈夫曼压缩与解压缩源码.zip哈夫曼压缩与解压缩源码.zip哈夫曼压缩与解压缩...

    pb实现压缩与解压缩

    实际的PB压缩解压缩实现可能根据具体需求和设计有所不同,例如可能使用了特定的压缩库(如zlib或libarchive),或者采用了自定义的压缩算法。要深入了解这个话题,最好能够查看和分析提供的源代码。

    压缩与解压缩

    在IT领域,压缩和解压缩是数据存储和传输过程...总结,压缩与解压缩是信息技术中不可或缺的部分,涉及多种算法和格式。无论是从理论学习还是实践操作,都需要深入理解和掌握这一领域的知识,以便在实际工作中灵活运用。

    赫夫曼压缩与解压缩

    赫夫曼编码是一种高效的数据压缩算法,由美国...通过以上步骤,我们可以使用C语言实现赫夫曼压缩与解压缩。需要注意的是,实际编程时,还需要考虑错误处理、内存管理以及效率优化等问题,以确保程序的稳定性和性能。

    Zip压缩与解压缩

    **Zip压缩与解压缩** Zip是一种广泛使用的文件压缩格式,由菲尔·卡尔森在1989年开发,旨在减少文件占用的磁盘空间,提高数据传输效率。它通过使用不同的压缩算法,如DEFLATE,可以有效地缩小文件大小。在IT领域,...

    huffman编码的压缩与解压缩

    在C#环境下实现哈夫曼编码的压缩与解压缩,可以帮助我们理解这一算法的工作原理,同时为文件处理提供了一个实用工具。 哈夫曼编码的核心思想是构建一棵哈夫曼树(Huffman Tree),这是一棵带权路径长度最短的二叉树...

    解压缩工具类

    这类工具类通常封装了与解压缩相关的复杂操作,使得开发者无需深入了解底层细节,即可完成文件的解压任务。 描述中的“java解压文件工具类、放入工程直接可用、案例、web开发、unziputil”进一步明确了这个工具类的...

    ubuntu 中压缩与解压缩命令

    ### Ubuntu中的压缩与解压缩命令详解 在日常的文件管理和数据传输过程中,压缩与解压缩是非常重要的操作之一。尤其在Linux环境下,掌握这些命令对于提高工作效率有着不可忽视的作用。本文将详细介绍Ubuntu系统中...

    linux下的压缩与解压缩

    `tar`不仅可以打包文件,还可以通过与其他工具(如gzip、bzip2等)结合使用来进行压缩或解压缩。 - **主选项**: - `c`: 创建新归档文件。 - `r`: 将文件添加到现有归档文件的末尾。 - `t`: 列出归档文件的内容...

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

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

    基于C#的压缩与解压缩 源码

    本示例主要探讨的是如何使用C#编程语言实现文件和目录的压缩与解压缩功能。C#,作为微软开发的一种面向对象的编程语言,提供了丰富的库和API来处理这种任务。 首先,我们要知道压缩的主要目的是减小文件或数据的...

    JAVA文件压缩与解压缩实践(源代码).zip

    JAVA文件压缩与解压缩实践(源代码).zipJAVA文件压缩与解压缩实践(源代码).zipJAVA文件压缩与解压缩实践(源代码).zipJAVA文件压缩与解压缩实践(源代码).zipJAVA文件压缩与解压缩实践(源代码).zipJAVA文件压缩与解压缩...

    批量压缩解压缩.rar

    "批量压缩解压缩.rar" 提供了这样的功能,它允许用户一次性处理多个文件或整个目录,极大地提高了效率。这一工具对于那些需要频繁处理大量文件的IT专业人员来说尤其实用,比如开发人员、系统管理员和数据分析师。 ...

Global site tag (gtag.js) - Google Analytics