隨筆-46  評(píng)論-54  文章-0  trackbacks-0

          Java打多重zip壓縮

              -- ByteArrayOutputStream結(jié)合org.apache.commons.compress來(lái)實(shí)現(xiàn)



          也就是很多個(gè)zip文件,但是打包的時(shí)候,部分要先集中到一個(gè)zip文件后,再寫(xiě)入總的zip文件。

          可以采用臨時(shí)文件夾的方式來(lái)解決,下面也是一種解決方法,部分代碼如下:



                  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]

          當(dāng)初查資料時(shí),就知道有個(gè)亂碼錯(cuò)誤,自己從沒(méi)發(fā)現(xiàn)過(guò),后來(lái)發(fā)現(xiàn)是因?yàn)?/span>winrar 3.8已經(jīng)解決了這個(gè)問(wèn)題。

          但是為了和其他兼容,修改了代碼。



          打包后效果如下圖:

           

          參考資料:

          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

           

          posted on 2009-07-02 17:04 rox 閱讀(1785) 評(píng)論(0)  編輯  收藏 所屬分類(lèi): Java
          主站蜘蛛池模板: 忻州市| 芒康县| 玉溪市| 侯马市| 呼和浩特市| 富裕县| 会东县| 太白县| 博野县| 东乡县| 什邡市| 韶关市| 化州市| 宁阳县| 鹤壁市| 湘乡市| 宜昌市| 上栗县| 锦州市| 邹城市| 新丰县| 阿巴嘎旗| 辛集市| 乌什县| 兴文县| 柳河县| 黄龙县| 于都县| 汽车| 莱阳市| 库尔勒市| 武陟县| 赤峰市| 于都县| 广东省| 儋州市| 上林县| 通海县| 陆川县| 玉林市| 丰顺县|