`
administer
  • 浏览: 20739 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

JAVA解压RAR和ZIP

阅读更多
/**
     * @Title: unZipFile
     * @Description: 解压ZIP文件
     * @author LuRh
     * @param @param zipFile
     * @param @param descDir
     * @param @return
     * @param @throws IOException
     * @return boolean
     * @throws
     */
    @SuppressWarnings("rawtypes")
    public static boolean unZipFile(String filePath, String extractToPath) {
        try {
            File zipFile = new File(filePath);
            File extractPath = new File(extractToPath);
            if (!extractPath.exists()) {
                extractPath.mkdirs();
            }
            ZipFile zip = new ZipFile(zipFile, "GBK");
            for (Enumeration entries = zip.getEntries(); entries.hasMoreElements();) {
                ZipEntry entry = (ZipEntry) entries.nextElement();
                String zipEntryName = entry.getName();
                InputStream in = zip.getInputStream(entry);
                String outPath = (extractToPath + zipEntryName).replaceAll("\\*", "/");
                File file = new File(outPath.substring(0, outPath.lastIndexOf('/')));

                if (!file.exists()) {
                    file.mkdirs();
                }

                if (new File(outPath).isDirectory()) {
                    continue;
                }
                if (in != null) {
                    OutputStream out = new FileOutputStream(outPath);
                    byte[] buf = new byte[2048];
                    int len;
                    while ((len = in.read(buf)) > 0) {
                        out.write(buf, 0, len);
                    }
                    in.close();
                    out.close();
                }
            }
        } catch (IOException e) {
            return false;
        }
        return true;
    }

    /**
     * @Title: unRARFile
     * @Description: 解压RAR文件
     * @author LuRh
     * @param @param sourceRar
     * @param @param destDir
     * @param @return
     * @param @throws Exception
     * @return boolean
     * @throws
     */
    public static boolean unRARFile(String filePath, String extractToPath) {
        Archive archive = null;
        FileOutputStream fileOutputStream = null;
        try {
            archive = new Archive(new File(filePath));
            FileHeader fileHeader = archive.nextFileHeader();
            while (fileHeader != null) {
                if (!fileHeader.isDirectory()) {
                    String compressFileName = "";
                    String destFileName = "";
                    String destDirName = "";

                    if (fileHeader.isUnicode()) {
                        compressFileName = fileHeader.getFileNameW().trim();
                    } else {
                        compressFileName = fileHeader.getFileNameString().trim();
                    }

                    // 非windows系统
                    if (File.separator.equals("/")) {
                        destFileName = extractToPath + compressFileName.replaceAll("\\\\", "/");
                        destDirName = destFileName.substring(0, destFileName.lastIndexOf("/"));
                        // windows系统
                    } else {
                        destFileName = extractToPath + compressFileName.replaceAll("/", "\\\\");
                        destDirName = destFileName.substring(0, destFileName.lastIndexOf("\\"));
                    }
                    File dir = new File(destDirName);

                    if (!dir.exists() || !dir.isDirectory()) {
                        dir.mkdirs();
                    }

                    fileOutputStream = new FileOutputStream(new File(destFileName));
                    archive.extractFile(fileHeader, fileOutputStream);
                    fileOutputStream.close();
                    fileOutputStream = null;
                }
                fileHeader = archive.nextFileHeader();
            }
            archive.close();
            archive = null;
        } catch (Exception e) {
            return false;
        } finally {
            if (fileOutputStream != null) {
                try {
                    fileOutputStream.close();
                    fileOutputStream = null;
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }
            if (archive != null) {
                try {
                    archive.close();
                    archive = null;
                } catch (Exception e) {
                    return false;
                }
            }
        }
        return true;
    }
分享到:
评论

相关推荐

    java rar和zip解压

    在Java编程环境中,处理压缩文件如RAR和ZIP是常见的任务,尤其在数据传输、存储优化以及软件部署等场景中。本文将深入探讨如何使用Java来解压RAR和ZIP格式的文件,提供必要的理论知识和实战代码示例。 首先,我们要...

    java实现的解压与压缩 zip和rar类型的

    本文将深入探讨如何使用Java实现ZIP和RAR类型的压缩与解压操作,以及相关知识点。 首先,我们来看ZIP文件格式。ZIP是一种广泛使用的文件压缩格式,其在Java中的处理主要通过`java.util.zip`包。这个包提供了多个类...

    java解压缩rar以及zip格式文件

    java解压缩 rar 以及 zip 格式文件

    JAVA解压缩ZIP或RAR格式的文件

    总的来说,解压缩ZIP和RAR格式的文件在Java中可以通过标准库或第三方库轻松实现,理解并掌握I/O流和压缩流的使用是关键。在开发过程中,确保代码的健壮性和灵活性,同时考虑性能优化,例如批量解压缩、多线程处理等...

    Java通用解压代码(RAR5,Zip,7Z)

    在Java编程环境中,解压不同类型的压缩文件,如RAR5、Zip和7z,是一项常见的任务。为了实现这一功能,我们需要使用特定的库,因为Java标准库并不直接支持RAR5和7z格式。这里我们将详细探讨如何使用Java来处理这些...

    JAVA 上传ZIP,RAR文件并解压

    在Java编程环境中,上传并处理ZIP和RAR压缩文件是一项常见的任务,特别是在文件传输、数据存储以及备份场景下。本文将详细讲解如何实现这个功能,包括文件上传、实时进度跟踪、指定解压路径以及解压过程。 首先,让...

    java实现批量解压带密码的 rar or zip 文件

    在Java编程环境中,批量解压带密码的RAR或ZIP文件是一项常见的任务,特别是在软件开发过程中,可能需要处理包含源码和库文件的压缩包。本文将深入探讨如何使用Java实现这个功能,以及涉及的相关知识点。 首先,解压...

    java对zip、rar文件的压缩和解压缩

    本文将详细介绍如何使用Java语言实现ZIP和RAR格式文件的压缩与解压缩操作。文章通过具体的代码示例展示了整个处理流程,并针对不同格式文件的特点进行了优化。 #### ZIP文件的压缩与解压缩 ##### 压缩原理与API...

    java zip rar(区分有无密码的RAR文件) gz ftp工具类

    在Java中,可以使用`java.util.zip.GZIPOutputStream`来压缩数据,`java.util.zip.GZIPInputStream`来解压缩。`GZUtil.java`可能包含了压缩和解压缩GZ文件的相关方法。 4. **FTP工具类**: FTP(文件传输协议)常...

    java 压缩/解压 .zip/.rar/.tar 文件

    在提供的代码中,可以看到使用了`de.innosystec.unrar.Archive`类来解压缩RAR文件,但请注意,这个库可能需要额外的授权。 ```java Archive archive = new Archive(new File("input.rar")); archive.extractAll(...

    java 读取ZIP和RAR压缩包的目录结构

    java ZIP和RAR 压缩包 目录结构。 1.ant.jar 解决java自带zip不能读取中文压缩包的问题; 2.需要安装WINRAR软件,以便解压rar文件,然后获取对应目录; 3.实现在线预览压缩包目录结构的功能;

    java 文件解压rar和zip格式

    我这个资源是也是从网上下的,下下来之后在单个测试类里面解压rar是没问题的,但是在Action里面调就抛java.lang.OutOfMemoryError: Java heap space,所以自己换了种解压rar的方法,以前的方法注释掉了。action里面...

    javaandroid可用的ziprar解压缩代码实现.rar

    在Android平台上,对ZIP和RAR文件进行解压缩是常见的需求,比如在安装APK应用、更新资源文件或者处理用户上传的数据时。JavaAndroid可用的ziprar解压缩代码实现提供了这样的功能,但请注意,由于文件数量多,可能...

    详解Java无需解压直接读取Zip文件和文件内容

    Java无需解压直接读取Zip文件和文件内容是Java语言中的一种常见操作,通过使用java.util.zip包中的ZipFile、ZipInputStream和ZipEntry类,我们可以轻松地读取Zip文件和文件内容。下面,我们将详细介绍如何使用Java...

    Java解压缩文件,尤其对于Rar5.0版本的解压实现.zip

    沙漏哦2022-09-16 16:00:57原证Java解压缩文件,尤其对于Rar5.0版本的解压实现 项目描述 junrar已经不再支持Rar5版本的压缩文件。sevenzipjbinding对于Rar5压缩包的解压是调用本地7z软件进行解压的,如果本机环境...

    Java带密码解压缩RAR压缩包(内附代码)

    首先,我们需要一个库来处理RAR格式,因为Java标准库并不直接支持RAR解压缩。在这种情况下,我们可以使用`java-unrar`库,这是一个基于GNU Crypto的Java RAR工具包。文件名`java-unrar_gnu-crypto`可能就是这个库的...

    (JAVA)利用Java实现zip压缩.解压缩.rar_decompress rar java_zip 压缩

    接下来,我们讨论如何解压缩ZIP文件。解压缩通常包括以下步骤: 1. **创建`ZipInputStream`**:同样,你需要创建一个`ZipInputStream`,它从ZIP文件的输入流读取。 ```java FileInputStream fis = new ...

    Java解压ZIP和RAR格式文件_所需资源.rar

    在Java编程环境中,处理压缩文件,如ZIP和RAR格式,是一项常见的任务。这些文件类型广泛应用于数据归档、软件分发以及数据交换。本资源主要关注如何使用Java来解压这两种格式的文件。 首先,我们要了解Java提供的...

    Java解压zip,rar,7z的jar包

    这个示例展示了如何使用Apache Commons Compress库进行.zip文件的解压缩和压缩操作。请注意,对于.rar和.7z文件,你需要根据具体库的文档进行相应调整。 总的来说,Java处理.zip、.rar和.7z文件时,需依赖第三方库...

    java.util.zip 解压缩文件,ZIP格式压缩文件.rar

    在Java编程语言中,`java.util.zip` 是一个非常重要的包,它提供了处理各种压缩格式(如ZIP和GZ)的工具。在这个场景中,我们将深入探讨如何使用这个包来解压缩和压缩ZIP格式的文件。`java.util.zip` 包包含几个关键...

Global site tag (gtag.js) - Google Analytics