`
fireflylover
  • 浏览: 110509 次
  • 性别: Icon_minigender_2
  • 来自: 武汉
社区版块
存档分类
最新评论

解压/压缩zip包

阅读更多
压缩/解压采用org.apache.tools.zip包,相对其他压缩/解压包,这个支持中文比较好

1.解压zip文件

   //解压文件
  public synchronized void unzip(String zipFileName, String extPlace,
                                 boolean whether) throws Exception {
    try {
      (new File(extPlace)).mkdirs();
      File f = new File(zipFileName);
      ZipFile zipFile = new org.apache.tools.zip.ZipFile(zipFileName);
      //zipFile = new ZipFile(zipFileName);
      if ( (!f.exists()) && (f.length() <= 0)) {
        throw new Exception("要解压的文件不存在!");
      }
      String strPath, gbkPath, strtemp;
      File tempFile = new File(extPlace);
      strPath = tempFile.getAbsolutePath();
      java.util.Enumeration e = zipFile.getEntries();
      while (e.hasMoreElements()) {
        org.apache.tools.zip.ZipEntry zipEnt = (org.apache.tools.zip.ZipEntry)
            e.nextElement();
        gbkPath = zipEnt.getName();
        if (zipEnt.isDirectory()) {
          strtemp = strPath + File.separator + gbkPath;
          File dir = new File(strtemp);
          dir.mkdirs();
          continue;
        }
        else {
          //读写文件
          InputStream is = zipFile.getInputStream(zipEnt);
          BufferedInputStream bis = new BufferedInputStream(is);
          gbkPath = zipEnt.getName();
          strtemp = strPath + File.separator + gbkPath;

          //建目录
          String strsubdir = gbkPath;
          for (int i = 0; i < strsubdir.length(); i++) {
            if (strsubdir.substring(i, i + 1).equalsIgnoreCase("/")) {
              String temp = strPath + File.separator + strsubdir.substring(0, i);
              File subdir = new File(temp);
              if (!subdir.exists()) {
                subdir.mkdir();
              }
            }
          }
          FileOutputStream fos = new FileOutputStream(strtemp);
          BufferedOutputStream bos = new BufferedOutputStream(fos);
          int c;
          while ( (c = bis.read()) != -1) {
            bos.write( (byte) c);
          }
          bos.close();
          fos.close();
        }
      }
    }
    catch (Exception e) {
      e.printStackTrace();
      throw e;
    }
  }

2.压缩,直接从数据库读出文件列表,动态加入zip文件包中下载,无需服务器端保留文件

  <%@page contentType="text/html;charset=GBK" import="com.jspsmart.upload.*"%>
<%@page import="com.tiantium.contractsub.util.*"%>
<%@page import="java.sql.*,java.util.*,java.io.*,oracle.sql.*,java.util.Vector"%>
<%@page import="org.apache.tools.zip.*"%>
<%
  Connection conn = null;
  PreparedStatement pre = null;
  ResultSet rs = null;
  String fileName="download.zip";

  try {
    com.tiantium.contractsub.util.DBUtil dbUtil = new com.tiantium.contractsub.util.DBUtil();
    conn = dbUtil.getConnection();
   
    String sql = "select file_name,file_content from contsub_upload_file";

    pre = conn.prepareStatement(sql);
    // 查询BLOB对象
    rs = pre.executeQuery();
    //建立压缩输出流
    response.setContentType( "application/x-zip-compressed" );
    response.setHeader( "Content-Disposition" , "inline; filename="+fileName);
    ServletOutputStream sos=response.getOutputStream();
    ZipOutputStream outZip=new ZipOutputStream(new BufferedOutputStream(sos));

    while (rs.next()) {
       //添加文件到zip压缩包
       outZip.putNextEntry(new ZipEntry(rs.getString("file_name")));
       oracle.sql.BLOB blob = (oracle.sql.BLOB) rs.getBlob("file_content");
       InputStream is = blob.getBinaryStream();
       byte[] buffer = new byte[4000];
       int length;
       while ((length = is.read(buffer)) != -1){
        outZip.write(buffer, 0, length);
       }
       is.close();
    }
    outZip.close();
  }
  catch (Exception e) {
    e.printStackTrace();
  }
  finally {
    DBAssistant.closeRSC(rs, pre, conn);
  }

%>
分享到:
评论

相关推荐

    Zip2Dir V2.01 绿色中文版_压缩/解压/测试/注释ZIP.rar

    电子版漫画整理工具,能够批量压缩/解压/测试/注释zip文件,支持右健菜单,具有密码记忆功能。 动机: 在整理收藏的电子版漫画的时候,希望能够有这样的软件: 1、能够自动将指定目录下的所有zip、exe文件全部...

    vbs压缩和解压zip,vbs压缩zip,vbs解压zip

    ### VBS 脚本实现 ZIP 文件的压缩与解压缩 在日常工作中,我们经常会遇到需要对文件进行压缩或解压缩的情况。对于批量处理任务,使用脚本语言可以大大提高效率。Visual Basic Script(VBS)作为Windows环境中的一种...

    zip基于c/c++的压缩解压缩程序

    在项目中,"zip utils"可能是指一系列的工具函数,这些函数封装了压缩和解压缩的具体操作,例如添加文件到ZIP,从ZIP中提取文件,检查ZIP的完整性等。这些工具函数可以方便地集成到其他C++项目中,以实现文件的压缩...

    C#压缩/解压ZIP文件带密码功能

    在C#编程环境中,处理ZIP文件的压缩与解压是一项常见的任务,特别是在文件管理和数据传输中。本篇文章将深入探讨如何使用C#实现ZIP文件的压缩和解压,并且涵盖如何为ZIP文件设置密码,以增强文件的安全性。 首先,...

    unity解压缩zip包可用dll。net3.5;net4.0。亲测PC可用,移动端可用。

    标题和描述中提到的“unity解压缩zip包可用dll”,是指在Unity中用于解压缩ZIP文件的动态链接库(DLL)文件。 DLL(Dynamic Link Library)是Windows操作系统中的一个关键组件,它包含可由多个程序同时使用的代码和...

    使用 Java 实现的压缩/解压 ZIP 文件的工具类

    1. **压缩ZIP文件**: 要创建ZIP文件,我们需要使用`ZipOutputStream`。首先,创建一个`FileOutputStream`指向目标ZIP文件,然后通过它实例化`ZipOutputStream`。接着,遍历要压缩的文件列表,为每个文件创建一个`...

    java压缩文件生成带密码的zip包,解压带密码的zip包的工具类

    压缩文件方法 该方法需要引用zip4j的jar文件 单个文件、多个文件压缩 /** * 使用给定密码压缩指定文件或文件夹到指定位置. * * dest可传最终压缩文件存放的绝对路径,也可以传存放目录,也可以传null或者"".&lt;br /...

    Java实现将多目录多层级文件打成ZIP包,以及解压ZIP包

    本文将详细讲解如何使用Java实现将多目录多层级的文件打成ZIP包,以及如何解压这些ZIP包。我们将主要关注`FileUtils.java`这个类,以及依赖的`commons-compress-1.1.jar`库。 `commons-compress-1.1.jar`是Apache ...

    BattleMoonWars 归档解压/压缩程序 (Java)

    "BattleMoonWars 归档解压/压缩程序 (Java)" 是一个基于Java语言开发的工具,主要用于处理归档和压缩任务。在IT行业中,归档和压缩是数据管理的重要环节,尤其是在存储空间有限或者需要传输大量文件时。Java作为一种...

    Keka for Mac v1.1.29 中文版 解压/压缩工具

    Keka 应该是MacOS下最好用的一款解压/压缩工具,Keka mac版可以创建以下格式的文件:7Z、ZIP、TAR、GZIP、BZIP2、XZ、LZIP、DMG、ISO,并支持解压这些格式:7Z、ZIP、RAR、TAR、GZIP、BZIP2、XZ、LZIP、DMG、ISO、...

    利用ant.jar解压缩zip包

    本话题主要聚焦于如何利用ant.jar来解压缩ZIP包。首先,你需要确保你的项目中已经引入了ant.jar。这通常可以通过Maven或Gradle等构建工具添加依赖来实现。如果你的项目不使用这些工具,你可以将ant.jar作为库文件...

    Java压缩解压ZIP之Zip4j

    对于解压缩ZIP文件,`ZipFile`类也提供了`extractAll(String outputPath)`方法,可以将ZIP文件解压到指定的目录下。如果ZIP文件被加密,我们需要在解压前提供正确的密码。 ```java String outputFolder = "path/to/...

    PHP在线压缩/解压文件 PHPZIP 免费版.rar

    phpZip 是一个压缩/解压工具,是专为加快与服务器之间上传或下载文件而设计的。其最大的特点是附带PHP的解压/压缩程序,也就是说,本地压缩的程序可以在服务器解压缩,也可以将服务器端的文件打包下载,然后在本地...

    用java.util.zip包现数据压缩与解压

    ### 使用 Java.util.zip 包实现数据压缩与解压 在计算机科学领域,数据压缩技术是一项重要的功能,它能够帮助减少存储空间的需求以及提高网络传输效率。本文将通过一系列的示例来详细介绍如何利用 Java 中的 `java....

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

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

    Oracle P/L SQL实现文件压缩、解压功能(最新版)

    这个"Oracle P/L SQL实现文件压缩、解压功能"的资源,包含了一个名为`UTL_ZIP.plb`的PL/SQL包体以及一个`ZIP包头说明和调用例子.txt`的文本文件,这将帮助我们理解如何在Oracle环境中处理ZIP文件。 `UTL_ZIP`是...

    纯java实现文件的解压,压缩,可以分别解压/压缩 单条,多条,文件,文件夹

    本篇文章将深入探讨如何使用纯Java实现这一功能,特别关注如何解压和压缩单个或多个文件以及整个文件夹。我们将涵盖核心的Java API,如`java.util.zip`包中的类,以及实际的代码示例。 首先,我们需要了解`java....

    测试 Qt 使用Quazip 压缩/解压ZIP文件 的可执行程序案例,不是源码

    在本文中,我们将深入探讨如何在Qt环境中使用Quazip库进行ZIP文件的压缩与解压操作。Quazip是一个开源的C++库,它为Qt应用程序提供了方便的API,以便处理ZIP和GZIP格式的文件。这个"测试 Qt 使用Quazip 压缩/解压ZIP...

    php在线解压压缩zip工具

    总结,PHP在线解压压缩ZIP工具利用了`ZipArchive`类提供的功能,实现了便捷的文件打包和解包服务。在开发这样的工具时,需要注意安全、性能、用户体验等多个方面,以确保功能的稳定性和实用性。

    C语言实现Zip压缩解压.rar

    本文将深入探讨如何使用C语言实现ZIP压缩与解压功能。 ZIP是一种广泛使用的文件压缩格式,它能够将多个文件打包并压缩成一个单一的ZIP档案,以便于存储、传输和分享。ZIP文件格式的标准由PKWARE公司制定,并由Info-...

Global site tag (gtag.js) - Google Analytics