隨筆-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讀取文件是隨機讀取的,這就造成可能先讀取一個文件
          ????????????????
          //而這個文件所在的目錄還沒有出現(xiàn)過,所以要建出目錄來。
          ????????????????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 無聲 閱讀(447) 評論(0)  編輯  收藏 所屬分類: 職場生活
          主站蜘蛛池模板: 东丰县| 佛教| 独山县| 竹溪县| 包头市| 沧州市| 嘉兴市| 内江市| 历史| 平南县| 三穗县| 德惠市| 嘉祥县| 舞钢市| 哈密市| 祁连县| 崇信县| 惠来县| 乐安县| 锡林郭勒盟| 堆龙德庆县| 旅游| 罗定市| 福建省| 金塔县| 开平市| 浮梁县| 宁夏| 锡林浩特市| 鸡泽县| 神农架林区| 锡林郭勒盟| 天镇县| 新乡市| 镇安县| 曲阳县| 蒙城县| 乳山市| 仁怀市| 大理市| 昌吉市|