压缩/解压采用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);
}
%>
分享到:
相关推荐
电子版漫画整理工具,能够批量压缩/解压/测试/注释zip文件,支持右健菜单,具有密码记忆功能。 动机: 在整理收藏的电子版漫画的时候,希望能够有这样的软件: 1、能够自动将指定目录下的所有zip、exe文件全部...
### VBS 脚本实现 ZIP 文件的压缩与解压缩 在日常工作中,我们经常会遇到需要对文件进行压缩或解压缩的情况。对于批量处理任务,使用脚本语言可以大大提高效率。Visual Basic Script(VBS)作为Windows环境中的一种...
在项目中,"zip utils"可能是指一系列的工具函数,这些函数封装了压缩和解压缩的具体操作,例如添加文件到ZIP,从ZIP中提取文件,检查ZIP的完整性等。这些工具函数可以方便地集成到其他C++项目中,以实现文件的压缩...
在C#编程环境中,处理ZIP文件的压缩与解压是一项常见的任务,特别是在文件管理和数据传输中。本篇文章将深入探讨如何使用C#实现ZIP文件的压缩和解压,并且涵盖如何为ZIP文件设置密码,以增强文件的安全性。 首先,...
标题和描述中提到的“unity解压缩zip包可用dll”,是指在Unity中用于解压缩ZIP文件的动态链接库(DLL)文件。 DLL(Dynamic Link Library)是Windows操作系统中的一个关键组件,它包含可由多个程序同时使用的代码和...
1. **压缩ZIP文件**: 要创建ZIP文件,我们需要使用`ZipOutputStream`。首先,创建一个`FileOutputStream`指向目标ZIP文件,然后通过它实例化`ZipOutputStream`。接着,遍历要压缩的文件列表,为每个文件创建一个`...
压缩文件方法 该方法需要引用zip4j的jar文件 单个文件、多个文件压缩 /** * 使用给定密码压缩指定文件或文件夹到指定位置. * * dest可传最终压缩文件存放的绝对路径,也可以传存放目录,也可以传null或者"".<br /...
本文将详细讲解如何使用Java实现将多目录多层级的文件打成ZIP包,以及如何解压这些ZIP包。我们将主要关注`FileUtils.java`这个类,以及依赖的`commons-compress-1.1.jar`库。 `commons-compress-1.1.jar`是Apache ...
"BattleMoonWars 归档解压/压缩程序 (Java)" 是一个基于Java语言开发的工具,主要用于处理归档和压缩任务。在IT行业中,归档和压缩是数据管理的重要环节,尤其是在存储空间有限或者需要传输大量文件时。Java作为一种...
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。这通常可以通过Maven或Gradle等构建工具添加依赖来实现。如果你的项目不使用这些工具,你可以将ant.jar作为库文件...
对于解压缩ZIP文件,`ZipFile`类也提供了`extractAll(String outputPath)`方法,可以将ZIP文件解压到指定的目录下。如果ZIP文件被加密,我们需要在解压前提供正确的密码。 ```java String outputFolder = "path/to/...
phpZip 是一个压缩/解压工具,是专为加快与服务器之间上传或下载文件而设计的。其最大的特点是附带PHP的解压/压缩程序,也就是说,本地压缩的程序可以在服务器解压缩,也可以将服务器端的文件打包下载,然后在本地...
### 使用 Java.util.zip 包实现数据压缩与解压 在计算机科学领域,数据压缩技术是一项重要的功能,它能够帮助减少存储空间的需求以及提高网络传输效率。本文将通过一系列的示例来详细介绍如何利用 Java 中的 `java....
本文将深入探讨如何使用Java实现ZIP和RAR类型的压缩与解压操作,以及相关知识点。 首先,我们来看ZIP文件格式。ZIP是一种广泛使用的文件压缩格式,其在Java中的处理主要通过`java.util.zip`包。这个包提供了多个类...
这个"Oracle P/L SQL实现文件压缩、解压功能"的资源,包含了一个名为`UTL_ZIP.plb`的PL/SQL包体以及一个`ZIP包头说明和调用例子.txt`的文本文件,这将帮助我们理解如何在Oracle环境中处理ZIP文件。 `UTL_ZIP`是...
本篇文章将深入探讨如何使用纯Java实现这一功能,特别关注如何解压和压缩单个或多个文件以及整个文件夹。我们将涵盖核心的Java API,如`java.util.zip`包中的类,以及实际的代码示例。 首先,我们需要了解`java....
在本文中,我们将深入探讨如何在Qt环境中使用Quazip库进行ZIP文件的压缩与解压操作。Quazip是一个开源的C++库,它为Qt应用程序提供了方便的API,以便处理ZIP和GZIP格式的文件。这个"测试 Qt 使用Quazip 压缩/解压ZIP...
总结,PHP在线解压压缩ZIP工具利用了`ZipArchive`类提供的功能,实现了便捷的文件打包和解包服务。在开发这样的工具时,需要注意安全、性能、用户体验等多个方面,以确保功能的稳定性和实用性。
本文将深入探讨如何使用C语言实现ZIP压缩与解压功能。 ZIP是一种广泛使用的文件压缩格式,它能够将多个文件打包并压缩成一个单一的ZIP档案,以便于存储、传输和分享。ZIP文件格式的标准由PKWARE公司制定,并由Info-...