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 @ 2009年7月21日8: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 @ 2009年7月21日8:37:41]
当初查资料时,就知道有个乱码错误,自己从没发现过,后来发现是因为winrar 3.8已经解决了这个问题。
但是为了和其他兼容,修改了代码。
打包后效果如下图:
参考资料:
1、Commons Compress
http://labs.xiaonei.com/apache-mirror/commons/compress/binaries/commons-compress-1.0-bin.tar.gz
2、java.io.ByteArrayOutputStream
http://java.sun.com/javase/6/docs/api/java/io/ByteArrayOutputStream.html
3、本文地址
http://docs.google.com/View?id=ajfmzbdvh8wz_38ftxv59f6
分享到:
相关推荐
"commons-io-2.6-bin.zip" 提供了Apache Commons IO库的2.6版本,这是一个由Apache软件基金会开发的Java库,包含了大量实用的类和方法,用于简化和增强Java标准库中的IO操作。这个库提供了大量的静态方法,用于处理...
Commons IO 是一个由 Apache Software Foundation 开发的 Java 类库,主要包含了处理输入/输出流、文件、文件系统、以及与I/O相关的实用工具类。这个压缩包文件 "commons-io-2.4.jar.zip" 包含了 Commons IO 库的 ...
总的来说,ByteArrayInputStream和ByteArrayOutputStream是Java处理内存数据的利器,掌握了它们,可以提高你的程序效率,减少不必要的磁盘操作,让代码更加高效和简洁。通过不断实践和学习,你会发现在处理字节数组...
Apache Commons IO 是一个 Java 类库,专门处理输入/输出流操作,提供了一系列实用工具类,极大地简化了 Java I/O 操作。在这个主题中,我们将深入探讨 `commons-io-1.3.2-sources.jar` 中的核心概念和功能。 首先...
3. 使用Java的ZIP库(如Apache Commons Compress或Java内置的`java.util.zip`包)将附件合并成一个ZIP文件。 4. 将ZIP文件内容转换为字节流,并返回给前端。 在Java中,一个简单的示例可能如下: ```java @...
Apache Commons IO 是一个Java库,专门用于处理输入/输出流操作。这个库包含了大量实用工具类,可以帮助开发者更高效地处理文件、字节流、字符流等IO操作。"commons-io-2.5-bin.zip"是Apache Commons IO库的二进制...
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 ...
Apache Commons IO 1.4 版本虽然相对较老,但它的功能仍然强大且实用,尤其对于那些需要处理 I/O 操作的 Java 开发者来说,这是一个不可或缺的工具库。通过使用 Commons IO,开发者可以编写更简洁、更易于维护的代码...
【Java IO操作详解】 在Java编程中,IO(Input/Output)操作是处理数据输入与输出的核心技术。Java-IO操作共19页的笔记详细介绍了这一关键领域,旨在帮助开发者掌握如何有效地读取、写入和管理数据。Java IO API...
例如,结合Apache Kafka,Avro4s可以确保消息的可靠传输和高效解析;在大数据处理框架Spark中,Avro4s则能帮助开发者快速读写Avro格式的数据,提升数据处理效率。 五、使用示例 以下是一个简单的使用Avro4s创建、...
在Java中,IO主要通过一系列类和接口来实现,这些类和接口位于java.io包中。本篇文章将深入解析Java IO的原理、核心组件以及实际应用案例。 一、Java IO体系结构 Java的IO体系主要由流(Stream)、缓冲区(Buffer)...
- **包名**:`org.apache.commons.httpclient.server` - **类名**:`SimpleResponse` - **描述**:此文件描述了一个通用的 HTTP 响应实现,它包含了 HTTP 响应的基本结构和处理逻辑。 ### 2. 导入包 在文件开头,...
<groupId>org.apache.httpcomponents <artifactId>httpclient <version>4.5.2 <groupId>org.apache.httpcomponents <artifactId>httpmime</artifactId> <version>4.5.2 <groupId>commons-lang ...
import org.apache.commons.fileupload.FileItemHeaders; import org.springframework.web.multipart.commons.CommonsMultipartFile; public CommonsMultipartFile convertFileToFileItem(File file) throws ...
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)...
Java串行化是Java编程语言中的一个重要概念,用于将对象的状态转换为字节流,以便存储在磁盘上或在网络中传输。这个过程被称为对象的序列化,而将字节流恢复为对象的过程称为反序列化。在Java中,实现串行化的主要...
总结来说,这个压缩包提供了Java中Base64编码和解码的实现,包括`BASE64Encoder.jar`库以及可能的`sun`目录下的旧版实现。虽然在新版本的Java中已有更好的替代方案,但这些资源对于理解Base64编码的工作原理以及维护...
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"的资源提供了完整的实现示例,可以帮助开发者更好地理解和运用这些技术。 1. **调用系统相机**: Android系统提供了一个...
这里主要探讨的是使用Java标准库中的`java.util.zip`包来实现数据的GZIP压缩。GZIP是一种广泛使用的数据压缩算法,它能有效地压缩文本、二进制数据,甚至XML、JSON等格式的数据。 在给定的代码示例中,`GzipServlet...