`

打包Zip文件下载

 
阅读更多
  • 项目里要把当个文件单个打包下载,找了个资料,备份
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;

    }
 

 

  1.     ZipEntry:This class is used to represent a ZIP file entry.
  2.     ZipFile:This class is used to read entries from a zip file.
  3.     ZipInputStream:This class implements an input stream filter for reading files in the ZIP file format.
  4.     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 格式的文件,我相信你也能轻松搞定了:)。

分享到:
评论

相关推荐

    jquery打包,生成并下载zip文件

    - **创建下载链接**:通过创建一个隐藏的`&lt;a&gt;`标签,设置其`href`属性为ZIP文件的Blob URL,并触发点击事件,从而触发文件下载。 - **下载提示**:在用户完成文件选择并开始打包后,可以使用jQuery展示下载提示...

    Java多个文件根据URL下载后打包zip导出.zip

    在Java编程中,有时我们需要从网络上下载多个文件并将其打包为一个压缩文件,例如ZIP格式,以便于存储或分发。这个过程涉及到文件I/O操作、网络请求以及压缩算法的使用。以下是对这个场景的详细说明: 1. **网络...

    asp文件打包成zip组件

    这个“asp文件打包成zip组件”可能是一个自定义的ASP组件或者类库,它允许开发者在ASP应用程序中实现文件压缩的功能。 首先,让我们了解一下ZIP文件格式。ZIP是一种广泛使用的档案格式,可以将多个文件和目录压缩到...

    laravelexcelzip用于将一个大型Excel打包成Zip文件下载

    在IT行业中,尤其是在Web开发领域,处理大数据和文件下载是一个常见的挑战。`laravel-excel-zip`是一个针对PHP Laravel框架的扩展包,专门解决如何高效地处理和下载大型Excel文件的问题。考虑到大型Excel文件可能...

    java中将多个excel打包成zip文件下载.rar

    在描述中提到的"下载"功能,通常是指通过HTTP服务器提供文件下载服务。这涉及到Web开发框架,如Spring MVC。以下是使用Spring MVC实现下载的步骤: 1. **配置Controller**: 创建一个Spring MVC控制器方法,返回`...

    生成excel并打包成zip文件

    综上所述,"生成excel并打包成zip文件"这个任务涉及到使用Java编程语言,特别是Apache POI库来生成Excel文件,再结合Java标准库的压缩功能将Excel和文本文件打包成ZIP。整个过程涉及到了文件的创建、写入、压缩和...

    文件以及图片压缩zip并下载.zip

    Zip是一种广泛使用的文件格式,能够将多个文件或文件夹打包成一个单一的压缩文件,从而节省磁盘空间和网络带宽。在这个场景中,"文件以及图片压缩zip并下载.zip"是一个包含了文件和图片的压缩包,它既可以在线上环境...

    java压缩文件,zip打包

    应用java来压缩需要打包的文件,在系统管理中将毛哥路径或者某个文件夹压缩成zip包

    java后台批量下载文件并压缩成zip下载的方法

    Java后台批量下载文件并压缩成zip下载的方法是指在Java后台中批量下载文件,并将其压缩成zip文件下载到本地桌面。该方法具有重要的参考价值,感兴趣的小伙伴们可以参考以下内容。 java后台批量下载文件 在Java后台...

    文件打包压缩,可同时打包多个文件(也可以打包单个文件)

    标签中的"同时打包多个文件"和"压缩文件"指的是上述过程,即一次操作中处理多个文件并进行压缩。这种功能对于处理大量文件或目录结构非常有用,尤其是当需要将它们发送给他人或上传至服务器时。 总的来说,文件打包...

    net打包文件 net 压缩文件

    本文将深入探讨如何使用.NET内置方法来处理.NET打包文件和压缩文件。 首先,让我们了解`ZipFile`类。这个类提供了对ZIP存档的全面操作,包括创建、读取、写入和修改ZIP文件。例如,如果你想要创建一个新的ZIP文件并...

    java将文件打包成ZIP压缩文件和解压缩zip文件

    在Java编程中,打包文件为ZIP压缩文件以及解压缩ZIP文件是常见的操作,尤其是在处理大量数据传输或存储时。下面我们将详细探讨这个话题。 首先,Java标准库提供了`java.util.zip`包,它包含了用于处理ZIP文件的类,...

    .net多文件打包下载

    在.NET开发环境中,有时我们需要为用户提供一个功能,允许他们一次性下载多个文件,这通常通过打包成压缩文件(如ZIP)来实现。`.NET`框架提供了丰富的API,使得开发者能够轻松地处理这种需求。本篇文章将深入探讨...

    html+js实现将多个在线文件打包为压缩包下载

    html和js实现将多个在线文件打包为压缩包下载,将多个文件一起打包为zip格式文件后后下载。使用 JavaScript 中的 JSZip 库将多个在线附件打包为压缩包,然后使用浏览器的下载功能将其下载到本地

    php打包文件zip

    总之,使用PHP的`ZipArchive`类,你可以轻松地将文件或文件夹打包成ZIP压缩包,这在Web开发中非常有用,尤其是在需要提供下载服务或进行数据传输时。请确保根据实际的文件路径和需求调整上述代码,以满足你的特定...

    Spring Boot中使用Java实现文件批量下载与压缩功能

    通过以上步骤,我们成功地实现了一个简单的Spring Boot服务,该服务能够在接收到特定请求时将多份文件打包成ZIP压缩文件并提供给用户一次性下载。这种方式不仅极大地提升了用户体验,还简化了服务器端的处理逻辑。...

    java 实现指定目录下的文件打包zip格式 并指定存放zip包

    java 实现指定目录下的文件打包zip格式 并指定存放zip包

    JAVA打包成.ZIP文件

    在Java编程环境中,打包文件或文件夹为.ZIP...综上所述,Java提供了一套完善的API来处理ZIP文件的打包与下载,使得在JAVAWEB项目中实现这一功能变得简单而高效。在实际应用中,可以根据具体需求进行适当的调整和扩展。

    asp.net批量打包下载文件

    在ASP.NET环境中,批量打包下载文件是一项常见的需求,特别是在数据导出或提供用户打包多份资源时。这个场景可以通过ASP.NET MVC框架实现,利用HTTP协议的特性,将多个文件合并成一个压缩包供用户下载。以下是对这个...

    C# 将不同的文件打包后再形成总包下载

    1. 使用`ZipHelper.CompressFiles()`方法,将所有需要打包的文件(如上述文件)压缩成一个ZIP文件。 2. 创建HTTP响应,设置响应头为`Content-Type: application/zip`,`Content-Disposition: attachment; filename=...

Global site tag (gtag.js) - Google Analytics