`
rox
  • 浏览: 42692 次
  • 性别: 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
分享到:
评论

相关推荐

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

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

    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 ...

    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)...

    Java资源加载库Azzet.zip

    )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 ZIP 解压缩

    java语言操作解压缩文件。 /** * 数据压缩 * * @param data * @return * @throws Exception */ public static byte[] compress(byte[] data) throws Exception { ByteArrayInputStream bais = new ...

    Java实现远程屏幕监视

    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 ...

    RSA+bcpkix-jdk15.zip

    import org.apache.commons.lang.StringUtils; import com.jd.uwp.common.Constants; /** * RSA 工具类。提供加密,解密,生成密钥对等方法。 * 需要bcprov-jdk16-140.jar包。 * */ public class RSAUtil { ...

    Html2Image (JAVA)jar包

    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源代码.rar

    网络文件下载程序-基于Java的源代码,给定一个文件的网络URL地址,本程序将从该地址获取(下载)文件,java环境的手机,可直接运行本程序,具体代码:  in = (InputStream) Connector.openInputStream(url); //...

    Java文件处理工具类--FileUtil

    ByteArrayOutputStream out = new ByteArrayOutputStream(10240); int len; while ((len = in.read(buf)) >= 0) out.write(buf, 0, len); in.close(); return out.toByteArray(); } /** * ...

    J2ME入门教程.10(j2me与Servlet相互通讯)编写和配置Servlet服务端

    import java.io.*; import java.util.*; import javax.servlet.*; import javax.servlet.http.*; public class MyServlet extends HttpServlet { public void doPost(HttpServletRequest request, ...

    ByteArrayOutputStream简介和使用_动力节点Java学院整理

    ByteArrayOutputStream 是字节数组输出流。它继承于OutputStream。 ByteArrayOutputStream 中的数据被写入一个 byte 数组。缓冲区会随着数据的不断写入而自动增长。可使用 toByteArray() 和 toString() 获取数据。

    Android实现压缩字符串的方法示例

    前言 Android端可以对字符串进行压缩,我们在进行大量简单文本传输时...import java.io.ByteArrayOutputStream; import java.io.IOException; import java.util.zip.GZIPInputStream; import java.util.zip.GZIPOutput

    TCP并发上传——java源码

    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...

    BSONforJackson.zip

    BSON for Jackson 顾名思义,是 Jackson 的扩展,实现对 BSON 格式的支持。Maven    <groupId>de.undercouch  <artifactId>bson4jackson  <version>2.5.0   示例代码:import java.io.ByteArrayInputStream; ...

    TcpServer.java

    JAVA使用ByteArrayOutputStream、ByteArrayInputStream将对象序列化反序列化,通过JAVA socket实现对象在网络中传输

    Java生成密钥的实例.rar

    Java生成密钥的实例  //产生单钥加密的密钥(myKey)  KeyGenerator keyGenerator = KeyGenerator.getInstance("DESede"); //采用DESede算法  keyGenerator.init(168); //选择DESede算法,密钥长度为112位或168位...

    Android_0618_Note

    一款手机便宜签,实现存储文本和图片。 String title = title_edt.getText().toString(); String content = content_edt.getText().toString(); ContentValues values = new ContentValues(); if (img_iv....

    8583报文解析框架Simple8583.zip

    5)使用ByteArrayOutputStream将组装成的IsoPackage域值进行拼装成为一个大的byte数组,在byte前拼装两个字节的长度 6)通过Socket将数据发送并接受响应(读取前两个字节长度,根据长度获取其剩余报文),根据...

    IO体系.java

    InputStream ... |--ByteArrayOutputStream/:实现了一个输出流,其中的数据写入到一个byte数组。 | 使用toByteArray()和toString()获取数据。关闭无效,依然可以调用。不会产生任何IOException异常。

Global site tag (gtag.js) - Google Analytics