`
lzstone
  • 浏览: 94090 次
  • 性别: Icon_minigender_1
  • 来自: 大连
社区版块
存档分类
最新评论

java对zip文件进行解压并取出文件的名称

    博客分类:
  • java
阅读更多

1、先用JDK的类进行ZIP文件解压

    public List releaseWinZIPByList(String zipPath, String serverPath) {

        //zipPath为需要解压的zip文件
        //serverPath为解压后文件的存放路径
        List list = null;
        ZipInputStream in = null;
        FileOutputStream os = null;
        try {
            in = new ZipInputStream(new FileInputStream(zipPath));
            ZipEntry entry = null;
            while ((entry = in.getNextEntry()) != null) {
                String entryName = entry.getName();
                if (entry.isDirectory()) {
                    File file = new File(serverPath + File.separator + entryName);
                    file.mkdirs();
                } else {
                    os = new FileOutputStream(serverPath + File.separator + entryName);
                    int bytesRead = 0;
                    while ((bytesRead = in.read()) != -1) {
                        os.write(bytesRead);
                    }
                }// 未取值
            }
        } catch (FileNotFoundException e) {
            // TODO Auto-generated catch block
            Log4J.logWarn(e.getMessage());
        } catch (IOException e) {
            // TODO Auto-generated catch block
            Log4J.logWarn(e.getMessage());
        }
        return list;
    }

    JDK的解压的字符集只支持ISO-8859-1,所以说在解压的时候出现中文的地方会出现异常,可以采取先把文件转换成UUID的编码名称,当然这是没有业务需求的情况下!

2、利用ant解压文件

   public static void releaseZipFileList(String zipPath, String serverPath)
            throws Exception {
        //zipPath为需要解压的zip文件
        //serverPath为解压后文件的存放路径
        ZipFile zipFile = new ZipFile(zipPath);
        Enumeration e = zipFile.getEntries();
        org.apache.tools.zip.ZipEntry zipEntry = null;
        while (e.hasMoreElements()) {
            zipEntry = (org.apache.tools.zip.ZipEntry) e.nextElement();
            String entryName = zipEntry.getName();
            String fileNames[] = entryName.split("/");//读取文件集合
            int length = fileNames.length;
            String path = serverPath;
            for (int it = 0; it < length; it++) {
                if (it < length - 1) {
                    path += fileNames[it] + "/";
                    new File(path).mkdir();
                } else { // 读取最后的一个文件
                    if (entryName.endsWith("/")) { // 为目录,则创建文件夹
                        new File(serverPath + entryName).mkdir();
                    } else {
                        InputStream in = zipFile.getInputStream(zipEntry);
                        OutputStream os = new FileOutputStream(new File(
                                serverPath + entryName));
                        byte[] buf = new byte[1024];
                        int len;
                        while ((len = in.read(buf)) > 0) {
                            os.write(buf, 0, len);
                        }
                        in.close();
                        os.close();
                    }
                }
            }
        }
        zipFile.close();
    }

利用ant挤压可以支持中文,但是效率不高,有需要的时候可以用,用到的类在ant包中

 

分享到:
评论

相关推荐

    java实现霍夫曼树压缩文本文件和解压

    总结来说,通过Java实现霍夫曼编码不仅可以加深对数据结构和算法的理解,还能够实际应用到文件压缩和解压缩的场景中。这个过程涉及到文件操作、数据结构(二叉树和优先队列)、编码和解码等多方面的知识,对于提升...

    Huffman编码对文本文件进行压缩和解压

    Huffman编码是一种高效的数据压缩算法,它基于字符频率构建最优的前缀树(也称为Huffman树),从而实现对文本文件的压缩。在Java中实现Huffman编码,我们需要理解其核心原理并熟悉Java编程语法。 1. **Huffman编码...

    哈夫曼编码实现压缩解压缩java

    哈夫曼编码是一种高效的数据编码方法...在Java中,我们可以使用面向对象的方式设计数据结构和算法,结合文件操作类实现文件的压缩与解压缩。通过这个过程,我们可以有效地减小文本文件的存储空间,提高存储和传输效率。

    LZ78算法实现对任意字符串的压缩与解压

    - 读取压缩字符串,每次取出一个编码,根据编码在字典中找到对应的子串,并添加到解压后的字符串中。 - 更新字典,将新生成的子串(当前解压字符串+下一个编码对应的子串的第一个字符)添加到字典。 - 重复此过程...

    哈弗曼压缩解压文件

    哈弗曼编码是一种高效的数据压缩方法,由美国计算机科学家戴维·哈弗曼在1952年提出...通过理解以上知识点,我们可以设计并实现一个完整的哈弗曼压缩解压文件的Java程序,实现高效的数据压缩和还原,有效节省存储空间。

    HaffmanCode.rar_java 哈夫曼_压缩 解压 java_哈夫曼 编码_哈夫曼压缩

    6. **文件I/O操作**:在实现文件的压缩和解压过程中,Java的File类、FileInputStream、FileOutputStream和BufferedInputStream/OutputStream等类用于进行文件的读写操作,确保数据能正确地在磁盘和内存之间传输。...

    java哈夫曼压缩和解压

    在本文中,我们将深入探讨哈夫曼编码的基本原理、实现过程以及如何在Java中进行压缩和解压。 一、哈夫曼编码原理 哈夫曼编码是建立在哈夫曼树基础上的一种变长编码方法。它通过构造一棵具有最小带权路径长度的...

    java代码利用svnkit操作svn导出某版本或多个版本修改的文件

    利用svnkit操作svn,实现对版本修改文件的导出,可以导出多个版本,.java文件将会在本地取出.class文件,导出后压缩成压缩包,主要用于服务器上的资源更新,不需要开发人员去找到对应的.class文件或其他文件压缩然后...

    java源码包---java 源码 大量 实例

     Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、数字证书生成源码 2个目标文件 摘要:JAVA源码,...

    java源码包3

     Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、数字证书生成源码 2个目标文件 摘要:JAVA源码...

    java源码包2

     Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、数字证书生成源码 2个目标文件 摘要:JAVA源码...

    java 实现huaffman压缩和解压缩

    4. **文件压缩**:在`Encode.java`中,读取原始文件,统计每个字符的频率,构建哈夫曼树并生成编码。然后,将文件内容转换为哈夫曼编码的位序列,写入到输出文件。同时,需要保存哈夫曼编码表,以便解压缩时使用。 ...

    apache-tomcat-9.0.54请解压后将gz文件取出使用.7z

    在Linux环境下,对这个文件进行操作是常见的任务。 首先,我们需要了解如何在Linux系统中处理这个压缩文件。`.tar.gz`文件是一种常见的归档格式,它结合了`.tar`(用于打包多个文件和目录)和`.gz`(Gzip,用于压缩...

    Huffman文件加密解密Java实现

    在这个“Huffman文件加密解密Java实现”项目中,开发者提供了一个完整的Java程序,能够实现对文本文件进行Huffman编码和解码。以下是该项目可能涉及的关键知识点: 1. **Huffman树的构建**:首先,我们需要统计输入...

    文件压缩项目_文件压缩_

    总的来说,这个"文件压缩项目"提供了一个实际应用哈夫曼编码的实例,可以帮助学习者深入理解数据压缩原理,并掌握Java编程中如何实现这一过程。通过分析和实践该项目,不仅可以提升编程技能,还能对文件压缩技术有更...

    哈夫曼编码压缩解压.rar

    哈夫曼编码是一种高效的数据压缩方法,主要用于无损数据压缩,尤其在文本和图像压缩领域广泛应用。它基于一种称为哈夫曼树(Huffman ...通过实践项目,如“哈夫曼编码压缩解压.rar”所示,可以深入理解并提升这些技能。

    成百上千个Java 源码DEMO 4(1-4是独立压缩包)

    Java zip压缩包查看程序源码 1个目标文件 摘要:Java源码,文件操作,压缩包查看 Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码...

    java源码包4

     Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码截图如上所示。 Java 数字签名、数字证书生成源码 2个目标文件 摘要:JAVA源码...

    JAVA上百实例源码以及开源项目源代码

    Java zip压缩包查看程序源码 1个目标文件 摘要:Java源码,文件操作,压缩包查看 Java zip压缩包查看程序,应用弹出文件选择框,选择ZIP格式的压缩文件,可以像Winrar软件一样查看压缩文件内部的文件及文件夹,源码...

    哈夫曼树实现的压缩工具Java源代码

    总之,哈夫曼树在Java中实现的压缩工具涉及了数据结构、算法、位操作和文件处理等多个知识点,是学习和实践计算机科学基础的好例子。通过这个源代码,你可以加深对这些概念的理解,并提升编程能力。

Global site tag (gtag.js) - Google Analytics