public synchronized static ByteArrayOutputStream zip(Map<String, byte[]> map)
throws IOException {
ByteArrayOutputStream baos = new ByteArrayOutputStream();
ZipOutputStream zos = new ZipOutputStream(baos);
ZipEntry zipEntry;
for (String key : map.keySet()) {
zipEntry = new ZipEntry(key);
zipEntry.setSize(map.get(key).length);
zipEntry.setTime(System.currentTimeMillis());
zos.putNextEntry(zipEntry);
zos.write(map.get(key));
zos.flush();
}
zos.close();
return baos;
}
-
ZipEntry:This class is used to
represent a ZIP file entry.
-
ZipFile:This class is used to
read entries from a zip file.
-
ZipInputStream:This class
implements an input stream filter for reading files in the ZIP file
format.
-
ZipOutputStream:This class
implements an output stream filter for writing files in the ZIP file
format.
现在我们了解一下读写Zip文件的基本流程。当解压时,从该Zip文件输入流中读取出ZipEntry,然后根据ZipEntry的信息,读取对应文件的相应字节。代码实现如下:
public synchronized static Map<String, byte[]> unZip(InputStream is)
throws IOException {
Map<String, byte[]> result = new HashMap<String, byte[]>();
byte[] buf;
ZipInputStream zis = new ZipInputStream(is);
ZipEntry zipEntry = zis.getNextEntry();
while (zipEntry != null) {
if (zipEntry.isDirectory()) {
zipEntry = zis.getNextEntry();
continue;
} else {
buf = new byte[(int) zipEntry.getSize()];
zis.read(buf, 0, (int) zipEntry.getSize());
result.put(zipEntry.getName(), buf);
zipEntry = zis.getNextEntry();
}
}
return result;
}
压缩操作与解压操作差不多,先将文件字节流组装成ZipEntry,然后把ZipEntry加入到输出流中即可。代码实现如下:
至此,使用上面的两个方法就能完成基本的
Zip
文件压缩和解压缩处理了;该方法只适合处理
Zip
格式的文件,对于
GZip
格式的文件,我相信你也能轻松搞定了:)。
分享到:
相关推荐
- **创建下载链接**:通过创建一个隐藏的`<a>`标签,设置其`href`属性为ZIP文件的Blob URL,并触发点击事件,从而触发文件下载。 - **下载提示**:在用户完成文件选择并开始打包后,可以使用jQuery展示下载提示...
在Java编程中,有时我们需要从网络上下载多个文件并将其打包为一个压缩文件,例如ZIP格式,以便于存储或分发。这个过程涉及到文件I/O操作、网络请求以及压缩算法的使用。以下是对这个场景的详细说明: 1. **网络...
这个“asp文件打包成zip组件”可能是一个自定义的ASP组件或者类库,它允许开发者在ASP应用程序中实现文件压缩的功能。 首先,让我们了解一下ZIP文件格式。ZIP是一种广泛使用的档案格式,可以将多个文件和目录压缩到...
在IT行业中,尤其是在Web开发领域,处理大数据和文件下载是一个常见的挑战。`laravel-excel-zip`是一个针对PHP Laravel框架的扩展包,专门解决如何高效地处理和下载大型Excel文件的问题。考虑到大型Excel文件可能...
在描述中提到的"下载"功能,通常是指通过HTTP服务器提供文件下载服务。这涉及到Web开发框架,如Spring MVC。以下是使用Spring MVC实现下载的步骤: 1. **配置Controller**: 创建一个Spring MVC控制器方法,返回`...
综上所述,"生成excel并打包成zip文件"这个任务涉及到使用Java编程语言,特别是Apache POI库来生成Excel文件,再结合Java标准库的压缩功能将Excel和文本文件打包成ZIP。整个过程涉及到了文件的创建、写入、压缩和...
Zip是一种广泛使用的文件格式,能够将多个文件或文件夹打包成一个单一的压缩文件,从而节省磁盘空间和网络带宽。在这个场景中,"文件以及图片压缩zip并下载.zip"是一个包含了文件和图片的压缩包,它既可以在线上环境...
应用java来压缩需要打包的文件,在系统管理中将毛哥路径或者某个文件夹压缩成zip包
Java后台批量下载文件并压缩成zip下载的方法是指在Java后台中批量下载文件,并将其压缩成zip文件下载到本地桌面。该方法具有重要的参考价值,感兴趣的小伙伴们可以参考以下内容。 java后台批量下载文件 在Java后台...
标签中的"同时打包多个文件"和"压缩文件"指的是上述过程,即一次操作中处理多个文件并进行压缩。这种功能对于处理大量文件或目录结构非常有用,尤其是当需要将它们发送给他人或上传至服务器时。 总的来说,文件打包...
本文将深入探讨如何使用.NET内置方法来处理.NET打包文件和压缩文件。 首先,让我们了解`ZipFile`类。这个类提供了对ZIP存档的全面操作,包括创建、读取、写入和修改ZIP文件。例如,如果你想要创建一个新的ZIP文件并...
在Java编程中,打包文件为ZIP压缩文件以及解压缩ZIP文件是常见的操作,尤其是在处理大量数据传输或存储时。下面我们将详细探讨这个话题。 首先,Java标准库提供了`java.util.zip`包,它包含了用于处理ZIP文件的类,...
在.NET开发环境中,有时我们需要为用户提供一个功能,允许他们一次性下载多个文件,这通常通过打包成压缩文件(如ZIP)来实现。`.NET`框架提供了丰富的API,使得开发者能够轻松地处理这种需求。本篇文章将深入探讨...
html和js实现将多个在线文件打包为压缩包下载,将多个文件一起打包为zip格式文件后后下载。使用 JavaScript 中的 JSZip 库将多个在线附件打包为压缩包,然后使用浏览器的下载功能将其下载到本地
总之,使用PHP的`ZipArchive`类,你可以轻松地将文件或文件夹打包成ZIP压缩包,这在Web开发中非常有用,尤其是在需要提供下载服务或进行数据传输时。请确保根据实际的文件路径和需求调整上述代码,以满足你的特定...
通过以上步骤,我们成功地实现了一个简单的Spring Boot服务,该服务能够在接收到特定请求时将多份文件打包成ZIP压缩文件并提供给用户一次性下载。这种方式不仅极大地提升了用户体验,还简化了服务器端的处理逻辑。...
java 实现指定目录下的文件打包zip格式 并指定存放zip包
在Java编程环境中,打包文件或文件夹为.ZIP...综上所述,Java提供了一套完善的API来处理ZIP文件的打包与下载,使得在JAVAWEB项目中实现这一功能变得简单而高效。在实际应用中,可以根据具体需求进行适当的调整和扩展。
在ASP.NET环境中,批量打包下载文件是一项常见的需求,特别是在数据导出或提供用户打包多份资源时。这个场景可以通过ASP.NET MVC框架实现,利用HTTP协议的特性,将多个文件合并成一个压缩包供用户下载。以下是对这个...
1. 使用`ZipHelper.CompressFiles()`方法,将所有需要打包的文件(如上述文件)压缩成一个ZIP文件。 2. 创建HTTP响应,设置响应头为`Content-Type: application/zip`,`Content-Disposition: attachment; filename=...