文件或是文件夾打包壓縮成zip格式的Java代碼

by57 9年前發布 | 2K 次閱讀 Java

import java.io.BufferedInputStream;
import java.io.DataInputStream;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/* 將文件或是文件夾打包壓縮成zip格式

  • @author ysc */ public class ZipUtils { private static final Logger log = LoggerFactory.getLogger(ZipUtils.class);

    private ZipUtils(){}; /**

    • 創建ZIP文件
    • @param sourcePath 文件或文件夾路徑
    • @param zipPath 生成的zip文件存在路徑(包括文件名) */ public static void createZip(String sourcePath, String zipPath) { FileOutputStream fos = null; ZipOutputStream zos = null; try {

       fos = new FileOutputStream(zipPath);
       zos = new ZipOutputStream(fos);
       writeZip(new File(sourcePath), "", zos);
      

      } catch (FileNotFoundException e) {

       log.error("創建ZIP文件失敗",e);
      

      } finally {

       try {
           if (zos != null) {
               zos.close();
           }
       } catch (IOException e) {
           log.error("創建ZIP文件失敗",e);
       }
      
      

      } }

      private static void writeZip(File file, String parentPath, ZipOutputStream zos) { if(file.exists()){

       if(file.isDirectory()){//處理文件夾
           parentPath+=file.getName()+File.separator;
           File [] files=file.listFiles();
           for(File f:files){
               writeZip(f, parentPath, zos);
           }
       }else{
           FileInputStream fis=null;
           DataInputStream dis=null;
           try {
               fis=new FileInputStream(file);
               dis=new DataInputStream(new BufferedInputStream(fis));
               ZipEntry ze = new ZipEntry(parentPath + file.getName());
               zos.putNextEntry(ze);
               byte [] content=new byte[1024];
               int len;
               while((len=fis.read(content))!=-1){
                   zos.write(content,0,len);
                   zos.flush();
               }
      
           } catch (FileNotFoundException e) {
               log.error("創建ZIP文件失敗",e);
           } catch (IOException e) {
               log.error("創建ZIP文件失敗",e);
           }finally{
               try {
                   if(dis!=null){
                       dis.close();
                   }
               }catch(IOException e){
                   log.error("創建ZIP文件失敗",e);
               }
           }
       }
      

      } }
      public static void main(String[] args) { ZipUtils.createZip("E:\workspaces\netbeans\APDPlat\APDPlat_Web\target\APDPlat_Web-2.2\platform\temp\backup", "E:\workspaces\netbeans\APDPlat\APDPlat_Web\target\APDPlat_Web-2.2\platform\temp\backup.zip"); ZipUtils.createZip("E:\workspaces\netbeans\APDPlat\APDPlat_Web\target\APDPlat_Web-2.2\platform\index.jsp", "E:\workspaces\netbeans\APDPlat\APDPlat_Web\target\APDPlat_Web-2.2\platform\index.zip");

      } }</pre>

 本文由用戶 by57 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!