java技術研究

          統計

          留言簿(3)

          閱讀排行榜

          評論排行榜

          用java壓縮文件夾/文件(轉)

          轉自:http://www.aygfsteel.com/mrcmd/archive/2007/08/24/138963.html
          用java壓縮文件夾/文件
          壓縮文件夾代碼:
          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 2012-06-30 18:03 小秦 閱讀(344) 評論(1)  編輯  收藏

          評論

          # re: 用java壓縮文件夾/文件(轉)[未登錄] 2012-07-01 14:59 bigbigbig

          1.壓縮目錄代碼好使。
          2.壓縮文件代碼,需要做如下修改才能好使。
          FileOutputStream fos = new FileOutputStream(f.getName()+".zip");
          修改為
          FileOutputStream fos = new FileOutputStream(f.getAbsolutePath()+".zip");  回復  更多評論   


          只有注冊用戶登錄后才能發表評論。


          網站導航:
           
          主站蜘蛛池模板: 台南县| 乳山市| 长子县| 西青区| 治县。| 凭祥市| 浙江省| 咸丰县| 板桥市| 中西区| 潜山县| 安乡县| 老河口市| 遵义县| 天等县| 平远县| 阳谷县| 衡南县| 巴林左旗| 南投县| 临高县| 五大连池市| 星子县| 古交市| 聂拉木县| 思南县| 苍南县| 盐城市| 湄潭县| 武乡县| 广丰县| 嘉黎县| 郎溪县| 桃江县| 万全县| 顺昌县| 茶陵县| 灌阳县| 大兴区| 同江市| 巴东县|