隨筆-200  評論-148  文章-15  trackbacks-0

          1,壓縮的

          import ?java.io.BufferedInputStream;
          import ?java.io.BufferedOutputStream;
          import ?java.io.File;
          import ?java.io.FileInputStream;
          import ?java.io.FileOutputStream;
          import ?java.util.zip.ZipEntry;
          import ?java.util.zip.ZipOutputStream;

          public ? class ?Zip? {
          ????
          static ? final ? int ?BUFFER? = ? 2048 ;

          ????
          public ? static ? void ?main(String?argv[])? {
          ????????
          try ? {
          ????????????BufferedInputStream?origin?
          = ? null ;
          ????????????FileOutputStream?dest?
          = ? new ?FileOutputStream( " E:\\test\\myfiles.zip " );
          ????????????ZipOutputStream?out?
          = ? new ?ZipOutputStream( new ?BufferedOutputStream(
          ????????????????????dest));
          ????????????
          byte ?data[]? = ? new ? byte [BUFFER];
          ????????????File?f?
          = ? new ?File( " e:\\test\\a\\ " );
          ????????????File?files[]?
          = ?f.listFiles();

          ????????????
          for ?( int ?i? = ? 0 ;?i? < ?files.length;?i ++ )? {
          ????????????????FileInputStream?fi?
          = ? new ?FileInputStream(files[i]);
          ????????????????origin?
          = ? new ?BufferedInputStream(fi,?BUFFER);
          ????????????????ZipEntry?entry?
          = ? new ?ZipEntry(files[i].getName());
          ????????????????out.putNextEntry(entry);
          ????????????????
          int ?count;
          ????????????????
          while ?((count? = ?origin.read(data,? 0 ,?BUFFER))? != ? - 1 )? {
          ????????????????????out.write(data,?
          0 ,?count);
          ????????????????}

          ????????????????origin.close();
          ????????????}

          ????????????out.close();
          ????????}
          ? catch ?(Exception?e)? {
          ????????????e.printStackTrace();
          ????????}

          ????}

          }
          2,解壓縮的。
          import?java.io.BufferedInputStream;
          import?java.io.BufferedOutputStream;
          import?java.io.File;
          import?java.io.FileOutputStream;
          import?java.util.Enumeration;
          import?java.util.zip.ZipEntry;
          import?java.util.zip.ZipFile;

          public?class?UnZip?{
          ????
          static?final?int?BUFFER?=?2048;

          ????
          public?static?void?main(String?argv[])?{
          ????????
          try?{
          ????????????String?fileName?
          =?"E:\\test\\myfiles.zip";
          ????????????String?filePath?
          =?"E:\\test\\";
          ????????????ZipFile?zipFile?
          =?new?ZipFile(fileName);
          ????????????Enumeration?emu?
          =?zipFile.entries();
          ????????????
          int?i=0;
          ????????????
          while(emu.hasMoreElements()){
          ????????????????ZipEntry?entry?
          =?(ZipEntry)emu.nextElement();
          ????????????????
          //會把目錄作為一個file讀出一次,所以只建立目錄就可以,之下的文件還會被迭代到。
          ????????????????if?(entry.isDirectory())
          ????????????????
          {
          ????????????????????
          new?File(filePath?+?entry.getName()).mkdirs();
          ????????????????????
          continue;
          ????????????????}

          ????????????????BufferedInputStream?bis?
          =?new?BufferedInputStream(zipFile.getInputStream(entry));
          ????????????????File?file?
          =?new?File(filePath?+?entry.getName());
          ????????????????
          //加入這個的原因是zipfile讀取文件是隨機讀取的,這就造成可能先讀取一個文件
          ????????????????
          //而這個文件所在的目錄還沒有出現過,所以要建出目錄來。
          ????????????????File?parent?=?file.getParentFile();
          ????????????????
          if(parent?!=?null?&&?(!parent.exists())){
          ????????????????????parent.mkdirs();
          ????????????????}

          ????????????????FileOutputStream?fos?
          =?new?FileOutputStream(file);
          ????????????????BufferedOutputStream?bos?
          =?new?BufferedOutputStream(fos,BUFFER);???????????
          ????????????????
          ????????????????
          int?count;
          ????????????????
          byte?data[]?=?new?byte[BUFFER];
          ????????????????
          while?((count?=?bis.read(data,?0,?BUFFER))?!=?-1)
          ????????????????
          {
          ????????????????????bos.write(data,?
          0,?count);
          ????????????????}

          ????????????????bos.flush();
          ????????????????bos.close();
          ????????????????bis.close();
          ????????????}

          ????????????zipFile.close();
          ????????}
          ?catch?(Exception?e)?{
          ????????????e.printStackTrace();
          ????????}

          ????}

          }


          posted on 2008-01-19 15:31 無聲 閱讀(455) 評論(0)  編輯  收藏 所屬分類: 職場生活
          道可道非常道,名可名非常名
          <2008年1月>
          303112345
          6789101112
          13141516171819
          20212223242526
          272829303112
          3456789

          常用鏈接

          留言簿(5)

          我參與的團隊

          隨筆分類(174)

          隨筆檔案(200)

          文章分類(20)

          文章檔案(15)

          收藏夾

          開源網站

          朋友博客

          最新隨筆

          搜索

          •  

          最新評論

          閱讀排行榜

          評論排行榜

          主站蜘蛛池模板: 永清县| 南和县| 观塘区| 金湖县| 依安县| 鹤庆县| 额敏县| 曲靖市| 辽阳市| 澜沧| 双城市| 钦州市| 河南省| 泽库县| 盱眙县| 阿鲁科尔沁旗| 滨海县| 巴林左旗| 鱼台县| 江门市| 古浪县| 修文县| 谢通门县| 牟定县| 亳州市| 东乡族自治县| 疏勒县| 巫山县| 台安县| 南部县| 太仓市| 三台县| 通州区| 怀化市| 永济市| 泰宁县| 平潭县| 定日县| 莎车县| 霍城县| 马公市|