<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    小菜毛毛技術分享

    與大家共同成長

      BlogJava :: 首頁 :: 聯系 :: 聚合  :: 管理
      164 Posts :: 141 Stories :: 94 Comments :: 0 Trackbacks

    package unzip;

     

    import java.io.BufferedInputStream;

    import java.io.BufferedOutputStream;

    import java.io.File;

    import java.io.FileInputStream;

    import java.io.FileOutputStream;

    import java.io.IOException;

    import java.io.InputStream;

    import java.io.OutputStream;

    import java.util.Enumeration;

     

    import org.apache.tools.zip.ZipEntry;

    import org.apache.tools.zip.ZipFile;

    import org.apache.tools.zip.ZipOutputStream;

     

    /**

      * 功能: 1 、實現把指定文件夾下的所有文件壓縮為指定文件夾下指定 zip 文件 2 、實現把指定文件夾下的 zip 文件解壓到指定目錄下

      *

      * @author ffshi

      *

      */

    public class ZipUtils {

     

        public static void main(String[] args) {

     

           // 把 E 盤正則表達式文件夾下的所有文件壓縮到 E 盤 stu 目錄下,壓縮后的文件名保存為 正則表達式 .zip

           // zip ("E:\\ 正則表達式 ", "E:\\stu \\ 正則表達式 .zip ");

           // 把 E 盤 stu 目錄下的正則表達式 .zip 壓縮文件內的所有文件解壓到 E 盤 stu 目錄下面

           unZip ( "E:\\stu\\ 正則表達式 .zip" , "E:\\stu" );

     

        }

     

        /**

          * 功能:把 sourceDir 目錄下的所有文件進行 zip 格式的壓縮,保存為指定 zip 文件 create date:2009- 6- 9

          * author:Administrator

          *

          * @param sourceDir

          *             E:\\ 我的備份

          * @param zipFile

          *             格式: E:\\stu \\zipFile.zip 注意:加入 zipFile 我們傳入的字符串值是

          *             : "E:\\stu \\" 或者 "E:\\stu "

          *             如果 E 盤已經存在 stu 這個文件夾的話,那么就會出現 java.io.FileNotFoundException: E:\stu

          *             ( 拒絕訪問。 ) 這個異常,所以要注意正確傳參調用本函數哦

          *

          */

        public static void zip(String sourceDir, String zipFile) {

           OutputStream os;

           try {

               os = new FileOutputStream(zipFile);

               BufferedOutputStream bos = new BufferedOutputStream(os);

               ZipOutputStream zos = new ZipOutputStream(bos);

     

               File file = new File(sourceDir);

     

               String basePath = null ;

               if (file.isDirectory()) {

                  basePath = file.getPath();

               } else {

                  basePath = file.getParent();

               }

     

               zipFile (file, basePath, zos);

     

               zos.closeEntry();

               zos.close();

           } catch (Exception e) {

               // TODO Auto-generated catch block

               e.printStackTrace();

           }

     

        }

     

        /**

          *

          * create date:2009- 6- 9 author:Administrator

          *

          * @param source

          * @param basePath

          * @param zos

          * @throws IOException

          */

        private static void zipFile(File source, String basePath,

               ZipOutputStream zos) {

           File[] files = new File[0];

     

           if (source.isDirectory()) {

               files = source.listFiles();

           } else {

               files = new File[1];

               files[0] = source;

           }

     

           String pathName;

           byte [] buf = new byte [1024];

           int length = 0;

           try {

               for (File file : files) {

                  if (file.isDirectory()) {

                      pathName = file.getPath().substring(basePath.length() + 1)

                             + "/" ;

                      zos.putNextEntry( new ZipEntry(pathName));

                      zipFile (file, basePath, zos);

                  } else {

                      pathName = file.getPath().substring(basePath.length() + 1);

                      InputStream is = new FileInputStream(file);

                      BufferedInputStream bis = new BufferedInputStream(is);

                      zos.putNextEntry( new ZipEntry(pathName));

                      while ((length = bis.read(buf)) > 0) {

                         zos.write(buf, 0, length);

                      }

                      is.close();

                  }

               }

           } catch (Exception e) {

               // TODO Auto-generated catch block

               e.printStackTrace();

           }

     

        }

     

        /**

          * 解壓 zip 文件,注意不能解壓 rar 文件哦,只能解壓 zip 文件 解壓 rar 文件 會出現 java.io.IOException: Negative

          * seek offset 異常 create date:2009- 6- 9 author:Administrator

          *

          * @param zipfile

          *             zip 文件,注意要是正宗的 zip 文件哦,不能是把 rar 的直接改為 zip 這樣會出現 java.io.IOException:

          *             Negative seek offset 異常

          * @param destDir

          * @throws IOException

          */

        public static void unZip(String zipfile, String destDir) {

     

           destDir = destDir.endsWith( "\\" ) ? destDir : destDir + "\\" ;

           byte b[] = new byte [1024];

           int length;

     

           ZipFile zipFile;

           try {

               zipFile = new ZipFile( new File(zipfile));

               Enumeration enumeration = zipFile.getEntries();

               ZipEntry zipEntry = null ;

     

               while (enumeration.hasMoreElements()) {

                  zipEntry = (ZipEntry) enumeration.nextElement();

                  File loadFile = new File(destDir + zipEntry.getName());

     

                  if (zipEntry.isDirectory()) {

                      // 這段都可以不要,因為每次都貌似從最底層開始遍歷的

                      loadFile.mkdirs();

                  } else {

                      if (!loadFile.getParentFile().exists())

                         loadFile.getParentFile().mkdirs();

     

                      OutputStream outputStream = new FileOutputStream(loadFile);

                      InputStream inputStream = zipFile.getInputStream(zipEntry);

     

                      while ((length = inputStream.read(b)) > 0)

                         outputStream.write(b, 0, length);

     

                  }

               }

               System. out .println( " 文件解壓成功 " );

           } catch (IOException e) {

               // TODO Auto-generated catch block

               e.printStackTrace();

           }

     

        }

     

    }

     


    也順便網上查了下rar格式與zip格式有什么區別:


    區別一、zip的安裝比較大,并僅僅有英文版+漢化包
    rar有官方的簡體中文版,并且安裝很小,不足一兆
    區別二、winrar的壓縮率較高,而zip的壓縮率更低
    區別三、zip支持的格式很多,但已經較老,不大流行
    rar支持格式也很多,并且還是流行的
    區別四、zip僅僅能夠壓縮成zip格式,不能解壓rar格式;rar不僅有自己的格式,還可以壓縮成zip格式并解壓zip格式
    區別五、zip的界面沒有rar漂亮
    區別六、winrar支持分卷壓縮,zip不支持
    區別七、國外很多都采用zip,因為它是免費的,rar不是免費的,在國內很流行是由于有盜版的存在;zip不能兼容rar,是因為這樣必須付出一筆費用


    WinRAR 可以創建兩種不同的壓縮文件格式: RAR 和 ZIP
    ZIP 壓縮文件

    在 ZIP 文件的最大優點就是普及率。比如說,大部分在 Internet 的壓縮文件都是 ZIP 壓縮文件,所以如果你要傳送壓縮文件給某一個人,但你無法確定你的收件人是否有 WinRAR 來解壓壓縮文件的內容時,使用 ZIP 格式是個好推薦。要不然你也可以發送 自解壓文件。此類的壓縮文件稍微大了一點點,但不需要任何的外部程序便可以解壓。

    另一個 ZIP 的優點便是速度。 ZIP 壓縮文件通常在創建時會比 RAR 快一些。

    RAR 壓縮文件

    RAR 格式比 ZIP 更能夠提供較好的壓縮率,特別是在 固實模式 時。另外一個 RAR 的重要功能是支持 多卷 壓縮文件。它們比起 ZIP 的“跨磁盤”壓縮文件更加便利和簡易。 WinRAR 不支持 ZIP 的磁盤拆分,如果你要創建分卷壓縮文件,請使用 RAR 的分卷壓縮來代替。

    RAR 格式也有一些在 ZIP 中所缺乏的重要功能,例如 恢復記錄,它允許物理受損數據的恢復,還能 鎖定 重要的壓縮文件,以防止它們被別人意外地更改。

    RAR 格式可以管理的文件大小幾乎是無限制的 (最大到 8,589,934,591 GB) ,而在 ZIP 壓縮文件的單個文件的最大值為 4 GB。需注意的是,舊式的文

    本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/xumiaohua/archive/2009/06/25/4297100.aspx


    本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/xumiaohua/archive/2009/06/25/4297100.aspx

    posted on 2010-01-18 16:42 小菜毛毛 閱讀(4809) 評論(0)  編輯  收藏 所屬分類: J2EE相關技術與框架
    主站蜘蛛池模板: 6080午夜一级毛片免费看6080夜福利 | 亚洲精品无码久久久久sm| 两个人日本WWW免费版| 麻豆亚洲AV永久无码精品久久| 毛片免费视频观看| 亚洲精品视频免费观看| 综合自拍亚洲综合图不卡区| 男女交性永久免费视频播放| 美女巨胸喷奶水视频www免费| 亚洲国产成人手机在线电影bd| 亚洲av区一区二区三| 亚洲免费一级视频| 九一在线完整视频免费观看| 午夜亚洲www湿好大| 美女被免费视频网站a国产 | 午夜免费啪视频在线观看| 亚洲国产aⅴ成人精品无吗| 好看的电影网站亚洲一区| 无限动漫网在线观看免费| a成人毛片免费观看| 亚洲精华国产精华精华液网站| 情人伊人久久综合亚洲| 曰皮全部过程视频免费国产30分钟 | 亚洲精品中文字幕无码蜜桃| 最近高清国语中文在线观看免费| 最近更新免费中文字幕大全| 亚洲精品无码久久久久A片苍井空| 亚洲av无码一区二区三区网站 | 久久精品中文字幕免费| 国产亚洲福利一区二区免费看| 亚洲综合日韩中文字幕v在线| 久久精品国产亚洲Aⅴ蜜臀色欲| 18禁成年无码免费网站无遮挡| 国产午夜无码精品免费看| 羞羞网站免费观看| 99999久久久久久亚洲| 亚洲国产精品成人精品无码区| 久久久精品2019免费观看 | 在线亚洲v日韩v| 亚洲色欲www综合网| 不卡一卡二卡三亚洲|