Java Zip/Unzip Files 記錄

來源:互聯網
上載者:User

標籤:zip   java   

最近項目中使用Java實現zip/unzip XML檔案的功能,Java內建的API可以方便實現檔案的壓縮和解壓縮,記錄一下相關代碼。

  1. 以源檔案名稱zip壓縮源檔案到目標檔案
public void zip(File src, File dest){    InputStream in = null;     ZipOutputStream zos= null;    try {         zos = new ZipOutputStream(new FileOutputStream(dest));        ZipEntry ze= new ZipEntry(src.getName());        zos.putNextEntry(ze);        in = new FileInputStream(src);        IOUtils.copy(in,zos);     } catch (IOException e) {        LOG.error("fail to zip file: " + src.getName() + " to : " + dest.getName());         throw e;    } finally {        if(null != zos){            try {                zos.closeEntry();            } catch (IOException ex){            }        }        IOUtils.closeQuietly(in);        IOUtils.closeQuietly(zos);}
  1. 從源檔案zip解壓所有檔案到目標檔案夾
 public void unZip(File file, String outputFolder){      File folder = new File(outputFolder);     if(folder.exists() && folder.isFile()){          throw IllegalArgumentException("Not an exists folder");      }     //create output directory is not exists     if(!folder.exists() && !folder.mkdir()){         throw IllegalStatusException("fail to create dest folder");     }     InputStream in = null; OutputStream out = null;     ZipFile zipFile = new ZipFile(file);      Enumeration emu = zipFile.entries();     while(emu.hasMoreElements()){           ZipEntry entry = (ZipEntry)emu.nextElement();           //建立目錄           if (entry.isDirectory()){                new File(outputFolder + entry.getName()).mkdirs();                    continue;           }           //檔案拷貝           InputStream is = zipFile.getInputStream(entry);           File file = new File(outputFolder + entry.getName());           //注意:zipfile讀取檔案是隨機讀取的,可能先讀取一個檔案,再讀取檔案夾,所以可能要先建立目錄           File parent = file.getParentFile();           if(parent != null && (!parent.exists())){               parent.mkdirs();           }           out = new FileOutputStream(file);           IOUtils.closeQuietly(in);           IOUtils.closeQuietly(out);       }     }catch(IOException ex){       LOG.error(ex.getMessage());       throw ex;    } finally {       if(null != zipFile){           try{               zipFile.close();           } catch (IOException e) {           }       }       IOUtils.closeQuietly(in);       IOUtils.closeQuietly(out);    } }

這代碼最主要就是檔案太大的話,IOUtils的copy耗CPU比較高。

Java Zip/Unzip Files 記錄

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.