隨筆-46  評論-54  文章-0  trackbacks-0

          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

           

          posted on 2009-07-02 17:04 rox 閱讀(1785) 評論(0)  編輯  收藏 所屬分類: Java
          主站蜘蛛池模板: 屏东市| 海门市| 怀来县| 石泉县| 扶风县| 来宾市| 钟祥市| 壶关县| 安仁县| 福贡县| 井冈山市| 北海市| 新乐市| 锡林浩特市| 临沭县| 老河口市| 崇州市| 波密县| 遂溪县| 南昌县| 安乡县| 赣榆县| 灵丘县| 板桥市| 黄龙县| 宜君县| 绍兴县| 额济纳旗| 邢台县| 宜宾市| 开封市| 台南市| 西华县| 屯留县| 保靖县| 楚雄市| 景洪市| 青龙| 吕梁市| 池州市| 南溪县|