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

Java打多重zip压缩包 -- ByteArrayOutputStream结合org.apache.commons.compress来实现

阅读更多

 

Java打多重zip压缩

    -- ByteArrayOutputStream结合org.apache.commons.compress来实现



也就是很多个zip文件,但是打包的时候,部分要先集中到一个zip文件后,再写入总的zip文件。

可以采用临时文件夹的方式来解决,下面也是一种解决方法,部分代码如下:



        File f1 = new File("C:/boot.ini");

        File f2 = new File("C:/NTDETECT.COM");



        final ByteArrayOutputStream baos = new ByteArrayOutputStream() ;



        //changed @ 20097218:37:41

        //ArchiveOutputStream ostemp = new ArchiveStreamFactory().createArchiveOutputStream("zip", baos);

        ZipArchiveOutputStream ostemp = new ZipArchiveOutputStream(baos);

        ostemp.setEncoding("GBK");



        ostemp.putArchiveEntry(new ZipArchiveEntry(f1.getName()));

        IOUtils.copy(new FileInputStream(f1), ostemp);

        ostemp.closeArchiveEntry();



        ostemp.putArchiveEntry(new ZipArchiveEntry(f2.getName()));

        IOUtils.copy(new FileInputStream(f2), ostemp);

        ostemp.closeArchiveEntry();



        ostemp.finish();

        ostemp.close();





        final OutputStream out = new FileOutputStream("c:/test.zip");

        ArchiveOutputStream os = new ArchiveStreamFactory().createArchiveOutputStream("zip", out);



        os.putArchiveEntry(new ZipArchiveEntry("打包.zip"));

        baos.writeTo(os);

        os.closeArchiveEntry();



        baos.close();



        os.finish();

        os.close();

[changed @ 20097218:37:41]

当初查资料时,就知道有个乱码错误,自己从没发现过,后来发现是因为winrar 3.8已经解决了这个问题。

但是为了和其他兼容,修改了代码。



打包后效果如下图:

 

参考资料:

1Commons Compress

http://labs.xiaonei.com/apache-mirror/commons/compress/binaries/commons-compress-1.0-bin.tar.gz



2java.io.ByteArrayOutputStream

http://java.sun.com/javase/6/docs/api/java/io/ByteArrayOutputStream.html



3、本文地址

http://docs.google.com/View?id=ajfmzbdvh8wz_38ftxv59f6 

 

 

0
0
分享到:
评论

相关推荐

    commons-io-2.6-bin.zip

    "commons-io-2.6-bin.zip" 提供了Apache Commons IO库的2.6版本,这是一个由Apache软件基金会开发的Java库,包含了大量实用的类和方法,用于简化和增强Java标准库中的IO操作。这个库提供了大量的静态方法,用于处理...

    commons-io-2.4.jar.zip

    Commons IO 是一个由 Apache Software Foundation 开发的 Java 类库,主要包含了处理输入/输出流、文件、文件系统、以及与I/O相关的实用工具类。这个压缩包文件 "commons-io-2.4.jar.zip" 包含了 Commons IO 库的 ...

    【IT十八掌徐培成】Java基础第16天-04.ByteArrayInputStream-ByteArrayOutputStream.zip

    总的来说,ByteArrayInputStream和ByteArrayOutputStream是Java处理内存数据的利器,掌握了它们,可以提高你的程序效率,减少不必要的磁盘操作,让代码更加高效和简洁。通过不断实践和学习,你会发现在处理字节数组...

    commons-io-1.3.2-sources.jar

    Apache Commons IO 是一个 Java 类库,专门处理输入/输出流操作,提供了一系列实用工具类,极大地简化了 Java I/O 操作。在这个主题中,我们将深入探讨 `commons-io-1.3.2-sources.jar` 中的核心概念和功能。 首先...

    vue+Java 实现附件分组下载压缩包(csdn)————程序.pdf

    3. 使用Java的ZIP库(如Apache Commons Compress或Java内置的`java.util.zip`包)将附件合并成一个ZIP文件。 4. 将ZIP文件内容转换为字节流,并返回给前端。 在Java中,一个简单的示例可能如下: ```java @...

    commons-io-2.5-bin.zip

    Apache Commons IO 是一个Java库,专门用于处理输入/输出流操作。这个库包含了大量实用工具类,可以帮助开发者更高效地处理文件、字节流、字符流等IO操作。"commons-io-2.5-bin.zip"是Apache Commons IO库的二进制...

    ganymed-ssh2-build210.jar java远程访问linux服务器操作、上传下载文件

    import org.apache.commons.lang.StringUtils; import java.io.*; import java.util.logging.Level; /** * SCP远程访问Linux服务器读取文件 * User: boyer * Date: 17-12-7 * Time: 下午3:22 * To change ...

    commons-io-1.4-bin.zip

    Apache Commons IO 1.4 版本虽然相对较老,但它的功能仍然强大且实用,尤其对于那些需要处理 I/O 操作的 Java 开发者来说,这是一个不可或缺的工具库。通过使用 Commons IO,开发者可以编写更简洁、更易于维护的代码...

    java学习笔记之Java-IO操作共19页.pdf.zi

    【Java IO操作详解】 在Java编程中,IO(Input/Output)操作是处理数据输入与输出的核心技术。Java-IO操作共19页的笔记详细介绍了这一关键领域,旨在帮助开发者掌握如何有效地读取、写入和管理数据。Java IO API...

    statistics-oam-impl-8.0.39.zip

    例如,结合Apache Kafka,Avro4s可以确保消息的可靠传输和高效解析;在大数据处理框架Spark中,Avro4s则能帮助开发者快速读写Avro格式的数据,提升数据处理效率。 五、使用示例 以下是一个简单的使用Avro4s创建、...

    Java中IO解读与使用实例-动力节点共17页.pdf

    在Java中,IO主要通过一系列类和接口来实现,这些类和接口位于java.io包中。本篇文章将深入解析Java IO的原理、核心组件以及实际应用案例。 一、Java IO体系结构 Java的IO体系主要由流(Stream)、缓冲区(Buffer)...

    chunk 有关代码

    - **包名**:`org.apache.commons.httpclient.server` - **类名**:`SimpleResponse` - **描述**:此文件描述了一个通用的 HTTP 响应实现,它包含了 HTTP 响应的基本结构和处理逻辑。 ### 2. 导入包 在文件开头,...

    java 中HttpClient传输xml字符串实例详解

    <groupId>org.apache.httpcomponents <artifactId>httpclient <version>4.5.2 <groupId>org.apache.httpcomponents <artifactId>httpmime</artifactId> <version>4.5.2 <groupId>commons-lang ...

    File 转 MultipartFile 和MultipartFile的maven配置

    import org.apache.commons.fileupload.FileItemHeaders; import org.springframework.web.multipart.commons.CommonsMultipartFile; public CommonsMultipartFile convertFileToFileItem(File file) throws ...

    java72-java-advance.rar

    a)java.sql b) java.util c) java.math d) java.io 2.不属于java.io包中的接口的一项是(C) a)DataInput b) DataOutput c) DataInputStream d) ObjectInput 3. ByteArrayOutputStream将下列哪一项作为输出流 C a)...

    【IT十八掌徐培成】Java基础第16天-03.串行化-深度复制.zip

    Java串行化是Java编程语言中的一个重要概念,用于将对象的状态转换为字节流,以便存储在磁盘上或在网络中传输。这个过程被称为对象的序列化,而将字节流恢复为对象的过程称为反序列化。在Java中,实现串行化的主要...

    java base64源码+jar包

    总结来说,这个压缩包提供了Java中Base64编码和解码的实现,包括`BASE64Encoder.jar`库以及可能的`sun`目录下的旧版实现。虽然在新版本的Java中已有更好的替代方案,但这些资源对于理解Base64编码的工作原理以及维护...

    java获取http状态码

    import org.apache.commons.httpclient.DefaultHttpMethodRetryHandler; import org.apache.commons.httpclient.HttpClient; import org.apache.commons.httpclient.HttpStatus; import org.apache.commons....

    Android高级应用源码-android 调用系统相机图库裁剪-图片上传-客服端(测试可用).zip

    这份"Android高级应用源码-android 调用系统相机图库裁剪-图片上传-客服端(测试可用).zip"的资源提供了完整的实现示例,可以帮助开发者更好地理解和运用这些技术。 1. **调用系统相机**: Android系统提供了一个...

    Java--数据的压缩[借鉴].pdf

    这里主要探讨的是使用Java标准库中的`java.util.zip`包来实现数据的GZIP压缩。GZIP是一种广泛使用的数据压缩算法,它能有效地压缩文本、二进制数据,甚至XML、JSON等格式的数据。 在给定的代码示例中,`GzipServlet...

Global site tag (gtag.js) - Google Analytics