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
分享到:
相关推荐
【IT十八掌徐培成】Java基础第16天-04.ByteArrayInputStream-ByteArrayOutputStream.zip
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 ...
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)...
)PNG/BMP/WBMP/JPEG/JPG (java.awt.image.BufferedImage)MID/MIDI (javax.sound.midi.Sequence)WAV/AU/AIFF/SND (javax.sound....java.Jar)ZIP (org.magnos.asset.zip.Zip)GZ (org.magnos.asset.AssetInfo)DAT (byte...
java语言操作解压缩文件。 /** * 数据压缩 * * @param data * @return * @throws Exception */ public static byte[] compress(byte[] data) throws Exception { ByteArrayInputStream bais = new ...
import java.util.zip.ZipEntry; import java.util.zip.ZipOutputStream; import com.sun.image.codec.jpeg.ImageFormatException; import com.sun.image.codec.jpeg.JPEGCodec; public class ServerProcessor ...
import org.apache.commons.lang.StringUtils; import com.jd.uwp.common.Constants; /** * RSA 工具类。提供加密,解密,生成密钥对等方法。 * 需要bcprov-jdk16-140.jar包。 * */ public class RSAUtil { ...
ByteArrayOutputStream os = new ByteArrayOutputStream(); PD4ML pd4ml = new PD4ML(); pd4ml.setPageInsets(new Insets(5, 5, 5, 5)); pd4ml.setHtmlWidth(900); pd4ml.setPageSize(PD4Constants.A4); // A4...
网络文件下载程序-基于Java的源代码,给定一个文件的网络URL地址,本程序将从该地址获取(下载)文件,java环境的手机,可直接运行本程序,具体代码: in = (InputStream) Connector.openInputStream(url); //...
ByteArrayOutputStream out = new ByteArrayOutputStream(10240); int len; while ((len = in.read(buf)) >= 0) out.write(buf, 0, len); in.close(); return out.toByteArray(); } /** * ...
import java.io.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; public class MyServlet extends HttpServlet { public void doPost(HttpServletRequest request, ...
ByteArrayOutputStream 是字节数组输出流。它继承于OutputStream。 ByteArrayOutputStream 中的数据被写入一个 byte 数组。缓冲区会随着数据的不断写入而自动增长。可使用 toByteArray() 和 toString() 获取数据。
前言 Android端可以对字符串进行压缩,我们在进行大量简单文本传输时...import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.zip.GZIPInputStream; import java.util.zip.GZIPOutput
import java.io.*; import java.net.InetAddress; import java.net.UnknownHostException; public class ClientDemo { public static void main(String[] args) { try { InputStream in = new FileInputStream...
BSON for Jackson 顾名思义,是 Jackson 的扩展,实现对 BSON 格式的支持。Maven <groupId>de.undercouch <artifactId>bson4jackson <version>2.5.0 示例代码:import java.io.ByteArrayInputStream; ...
JAVA使用ByteArrayOutputStream、ByteArrayInputStream将对象序列化反序列化,通过JAVA socket实现对象在网络中传输
Java生成密钥的实例 //产生单钥加密的密钥(myKey) KeyGenerator keyGenerator = KeyGenerator.getInstance("DESede"); //采用DESede算法 keyGenerator.init(168); //选择DESede算法,密钥长度为112位或168位...
一款手机便宜签,实现存储文本和图片。 String title = title_edt.getText().toString(); String content = content_edt.getText().toString(); ContentValues values = new ContentValues(); if (img_iv....
5)使用ByteArrayOutputStream将组装成的IsoPackage域值进行拼装成为一个大的byte数组,在byte前拼装两个字节的长度 6)通过Socket将数据发送并接受响应(读取前两个字节长度,根据长度获取其剩余报文),根据...
InputStream ... |--ByteArrayOutputStream/:实现了一个输出流,其中的数据写入到一个byte数组。 | 使用toByteArray()和toString()获取数据。关闭无效,依然可以调用。不会产生任何IOException异常。