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

压缩与解压缩类三

阅读更多
    /**
     * 返回需压缩目录内文件的相对路径 去除其压缩目录信息 如当前需压缩目录内文件是目录,则返回目录信息
     *
     * @param zipSrcDir 检索路径
     * @param jarfile 需压缩目录内文件
     * @return 截去之后的路径
     */
    private static String getRelativePath(final String zipSrcDir,
            final File jarfile)
    {
        String jarfileName = jarfile.getAbsolutePath();
        if (jarfile.isDirectory())
        {
            // 完善目录,windows:目录以"\"结尾
            if (!jarfileName.endsWith(File.separator))
            {
                jarfileName += File.separatorChar;
            }
        }
        int index = zipSrcDir.lastIndexOf(File.separator);
        final String newString = jarfileName.substring(index + 1);
        final String newRelativeString = newString.replaceAll("\\\\", "/");
        return newRelativeString;
    }
   
    /**
     * 根据传入的zipEntry判断是文件还是路径,如果是文件则创建文件,并将内容写入,否则创建目录
     * @param unZipdir 解压目录
     * @param zipEntry 压缩包条目
     * @param zipStream 压缩包输入流
     * @return 解压目录
     */
    private static ZipEntry createFileOrFolderByZipEntry(final String unZipdir,
            ZipEntry zipEntry, ZipInputStream zipStream)
    {
        final String relativePath = zipEntry.getName();
        final File target = new File(unZipdir, relativePath);
        final File parentFile = target.getParentFile();
        if (!parentFile.exists() && !parentFile.mkdirs())
        {
            throw new RuntimeException("create file failure");
        }
        if (false == zipEntry.isDirectory())
        {
            OutputStream out = null;
            try
            {
                out = new BufferedOutputStream(new FileOutputStream(target));
                writeFile(zipStream, out);
                out.close();
                zipEntry = zipStream.getNextEntry();
            }
            catch (final FileNotFoundException e)
            {
                e.printStackTrace();
            }
            catch (final IOException e)
            {
                e.printStackTrace();
            }
        }
        else
        {
            try
            {
                // 目录不存在则创建目录(解压后的目录)
                if (!target.exists() && !target.mkdirs())
                {
                    throw new RuntimeException("create file failure");
                }
                zipEntry = zipStream.getNextEntry();
            }
            catch (final IOException e)
            {
                e.printStackTrace();
            }
        }
        return zipEntry;
    }
}
分享到:
评论

相关推荐

    文件压缩解压缩

    在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),或者采用了自定义的压缩算法。要深入了解这个话题,最好能够查看和分析提供的源代码。

    赫夫曼压缩与解压缩

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

    压缩与解压缩

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

    Zip压缩与解压缩

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

    huffman编码的压缩与解压缩

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

    解压缩工具类

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

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

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

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

    3. **解压缩文件**: - 对于已压缩的ZIP文件,你可以使用`ZipArchive`的静态方法`Open`打开它,然后遍历`ZipArchive.Entries`集合,对每个条目调用`ExtractToFile`方法,指定目标路径以解压缩文件。 4. **解压缩...

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

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

    ubuntu 中压缩与解压缩命令

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

    linux下的压缩与解压缩

    ### Linux下的压缩与解压缩详解 #### 一、概述 在Linux系统中,压缩与解压缩功能对于数据管理和传输非常重要。对于初学者来说,掌握基本的压缩与解压缩技巧可以帮助他们更高效地管理文件和目录。本文将详细介绍...

    批量压缩解压缩.rar

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

Global site tag (gtag.js) - Google Analytics