Java on Line

          和java的日子!

            BlogJava :: 首頁 :: 新隨筆 :: 聯系 :: 聚合  :: 管理 ::
            8 隨筆 :: 0 文章 :: 28 評論 :: 0 Trackbacks
          壓縮文件夾代碼:
          import java.io.File;
          import org.apache.tools.zip.ZipOutputStream; //這個包在ant.jar里,要到官方網下載
          import java.io.FileInputStream;
          import java.io.FileOutputStream;
          import java.util.zip.ZipInputStream;
          import java.util.zip.ZipEntry;

          public class CompressBook {
              
          public CompressBook() {}

              
          /*
              * inputFileName 輸入一個文件夾
              * zipFileName 輸出一個壓縮文件夾
              
          */

              
          public void zip(String inputFileName) throws Exception {
                  String zipFileName 
          = "c:\\test.zip"//打包后文件名字
                  System.out.println(zipFileName);
                  zip(zipFileName, 
          new File(inputFileName));
              }


              
          private void zip(String zipFileName, File inputFile) throws Exception {
                  ZipOutputStream out 
          = new ZipOutputStream(new FileOutputStream(zipFileName));
                  zip(out, inputFile, 
          "");
                  System.out.println(
          "zip done");
                  out.close();
              }


              
          private void zip(ZipOutputStream out, File f, String base) throws Exception {
                  
          if (f.isDirectory()) {
                     File[] fl 
          = f.listFiles();
                     out.putNextEntry(
          new org.apache.tools.zip.ZipEntry(base + "/"));
                     base 
          = base.length() == 0 ? "" : base + "/";
                     
          for (int i = 0; i < fl.length; i++{
                     zip(out, fl[i], base 
          + fl[i].getName());
                   }

                  }
          else {
                     out.putNextEntry(
          new org.apache.tools.zip.ZipEntry(base));
                     FileInputStream in 
          = new FileInputStream(f);
                     
          int b;
                     System.out.println(base);
                     
          while ( (b = in.read()) != -1{
                      out.write(b);
                   }

                   in.close();
                 }

              }


              
          public static void main(String [] temp){
                  CompressBook book 
          = new CompressBook();
                  
          try {
                     book.zip(
          "c:\\c");//你要壓縮的文件夾
                  }
          catch (Exception ex) {
                     ex.printStackTrace();
                 }

              }

          }

          壓縮文件代碼:
          import java.io.*;
          import java.util.zip.*;//ZipOutputStream這個流在這里
          import java.util.*;

          public class ZipOutputStreamTest
          {
               
          public static void main(String[] args) throws Exception
               
          {
                 File f 
          = new File("a.jpg");
                 FileInputStream fis 
          = new FileInputStream(f);
                 BufferedInputStream bis 
          = new BufferedInputStream(fis);
                 
          byte[] buf = new byte[1024];
                 
          int len;
                 FileOutputStream fos 
          = new FileOutputStream(f.getName()+".zip");
                 BufferedOutputStream bos 
          = new BufferedOutputStream(fos);
                 ZipOutputStream zos 
          = new ZipOutputStream(bos);//壓縮包
                 ZipEntry ze = new ZipEntry(f.getName());//這是壓縮包名里的文件名
                 zos.putNextEntry(ze);//寫入新的 ZIP 文件條目并將流定位到條目數據的開始處

                 
          while((len=bis.read(buf))!=-1)
                 
          {
                    zos.write(buf,
          0,len);
                    zos.flush();
                 }

                 bis.close();
                 zos.close(); 
               }

          }
          posted on 2007-08-24 00:33 陳東 閱讀(40892) 評論(24)  編輯  收藏 所屬分類: Java基礎

          評論

          # re: 用java壓縮文件夾/文件[未登錄] 2007-11-10 14:36 ad
          不錯 謝謝了  回復  更多評論
            

          # re: 用java壓縮文件夾/文件 2008-01-27 22:54
          試過,真不錯,謝謝了.  回復  更多評論
            

          # re: 用java壓縮文件夾/文件 2008-06-23 18:49 flymz
          我用java.util.zip.ZipOutputStream;這個包也可以壓縮!  回復  更多評論
            

          # re: 用java壓縮文件夾/文件 2008-10-12 21:17 xh
          可以集成進jdk了  回復  更多評論
            

          # re: 用java壓縮文件夾/文件 2009-03-06 09:31 sem
          非常感謝!  回復  更多評論
            

          # re: 用java壓縮文件夾/文件 2010-07-14 15:44 ne_akari
          這代碼寫的真不規范。
          把所有異常全都拋出去,算什么回事。
          in.close();
          這句代碼,從語法上說:變量in明明是個局部變量,怎么會在代碼塊外面關閉。
          從邏輯上說:不管是在處理文件夾還是文件,都要執行,那是什么邏輯。
          博主最好能做個修改再放出來,以免誤導別人。  回復  更多評論
            

          # re: 用java壓縮文件夾/文件 2010-11-16 13:25 ww
          @flymz

          碰到中文就會有亂碼 用這個  回復  更多評論
            

          # re: 用java壓縮文件夾/文件[未登錄] 2010-11-19 17:16 test
          @ne_akari
          噴子?有異常了不拋出留著干什么?  回復  更多評論
            

          # re: 用java壓縮文件夾/文件 2011-06-15 12:47 tye
          中文亂碼  回復  更多評論
            

          # re: 用java壓縮文件夾/文件 2011-09-14 09:44 eppen
          @ne_akari
          作為基類應該拋出異常,業務類負責捕獲并定制錯誤消息  回復  更多評論
            

          # re: 用java壓縮文件夾/文件 2011-10-03 11:35 易元
          總得處理一下了啊,各種異常都往上拋,下邊不處理,拋到上邊也不處理,這也叫異常處理嗎???這只不過是編譯器不報錯罷了。  回復  更多評論
            

          # re: 用java壓縮文件夾/文件 2011-11-15 22:04 fskjb01
          @ne_akari
          人家只是說清楚問題(不清楚看標題),而把不相干的省略下而已,你這么多意見干嘛!!  回復  更多評論
            

          # re: 用java壓縮文件夾/文件 2011-12-15 16:44 hello223
          瞎說八道  回復  更多評論
            

          # re: 用java壓縮文件夾/文件 2012-04-28 12:40 路人
          @ne_akari
          當然要拋出去了異常吃了 別人都看不到才不規范呢
            回復  更多評論
            

          # re: 用java壓縮文件夾/文件 2012-05-08 15:59 t
          你看錯了吧,博主只不過{}位置對應錯了,in是沒問題的!
          else {
          out.putNextEntry(new org.apache.tools.zip.ZipEntry(base));
          FileInputStream in = new FileInputStream(f);
          int b;
          System.out.println(base);
          while ( (b = in.read()) != -1) {
          out.write(b);
          }
          in.close();
          }  回復  更多評論
            

          # re: 用java壓縮文件夾/文件[未登錄] 2012-12-15 15:10 小菜鳥
          中文咋辦  回復  更多評論
            

          # re: 用java壓縮文件夾/文件 2013-03-14 14:34 forecle
          人家只給你個示例,具體的你自已去寫啊,想得到直接就能用的,你也真夠臉皮厚的!沒本事!  回復  更多評論
            

          # re: 用java壓縮文件夾/文件[未登錄] 2013-05-10 23:49
          沒有注釋,苦逼啊。。。  回復  更多評論
            

          # 回復@ne_akari 2013-07-04 21:15 asd
          @ne_akari
          你就是個純傻 逼 還噴別人。。要別人寫好再放出來
          你自己看仔細了再說人家  回復  更多評論
            

          # re: 用java壓縮文件夾/文件[未登錄] 2013-07-23 09:20 張三
          @tye
          http://wlh.iteye.com/blog/134451

          這個鏈接里面的不會亂碼  回復  更多評論
            

          # 寫的真不錯 2013-07-25 17:50 沈坤林
          寫的真不錯,代碼拿出來就能執行,感謝感謝啊!  回復  更多評論
            

          # re: 用java壓縮文件夾/文件 2014-04-22 15:35 路人
          @ne_akari
          你個二逼,自己好好看看再說
            回復  更多評論
            

          # re: 用java壓縮文件夾/文件 2014-05-08 21:24 路人
          壓縮文件夾時,有問題吧,會多出一個文件夾來。  回復  更多評論
            

          # re: 用java壓縮文件夾/文件 2015-03-28 16:57 XURUIYANG
          YASUO  回復  更多評論
            

          主站蜘蛛池模板: 逊克县| 柳州市| 醴陵市| 芒康县| 玉溪市| 泰来县| 汽车| 花垣县| 定日县| 闵行区| 定陶县| 治县。| 汶上县| 奉化市| 全南县| 会同县| 齐齐哈尔市| 宁德市| 吉安县| 濮阳市| 霍林郭勒市| 邓州市| 土默特左旗| 安仁县| 临猗县| 曲周县| 盐亭县| 太仆寺旗| 方正县| 衡南县| 兰州市| 怀远县| 陆丰市| 中西区| 瓦房店市| 遂平县| 道孚县| 元谋县| 当雄县| 封开县| 康定县|