gpt4 book ai didi

使用java基础类实现zip压缩和zip解压工具类分享

转载 作者:qq735679552 更新时间:2022-09-29 22:32:09 25 4
gpt4 key购买 nike

CFSDN坚持开源创造价值,我们致力于搭建一个资源共享平台,让每一个IT人在这里找到属于你的精彩世界.

这篇CFSDN的博客文章使用java基础类实现zip压缩和zip解压工具类分享由作者收集整理,如果你对这篇文章有兴趣,记得点赞哟.

使用java基础类写的一个简单的zip压缩解压工具类   。

复制代码代码如下:

package sun.net.helper,

  。

import java.io.*; import java.util.logging.Logger; import java.util.zip.*; public class ZipUtil {     private final static Logger logger = Logger.getLogger(ZipUtil.class.getName());     private static final int BUFFER = 1024*10,

    /**      * 将指定目录压缩到和该目录同名的zip文件,自定义压缩路径      * @param sourceFilePath  目标文件路径      * @param zipFilePath     指定zip文件路径      * @return      */     public static boolean zip(String sourceFilePath,String zipFilePath){         boolean result=false;         File source=new File(sourceFilePath);         if(!source.exists()){             logger.info(sourceFilePath+" doesn't exist.");             return result;         }         if(!source.isDirectory()){             logger.info(sourceFilePath+" is not a directory.");             return result;         }         File zipFile=new File(zipFilePath+"/"+source.getName()+".zip");         if(zipFile.exists()){             logger.info(zipFile.getName()+" is already exist.");             return result;         }else{             if(!zipFile.getParentFile().exists()){                 if(!zipFile.getParentFile().mkdirs()){                     logger.info("cann't create file "+zipFile.getName());                     return result;                 }             }         }         logger.info("creating zip file...");         FileOutputStream dest=null;         ZipOutputStream out =null;         try {             dest = new FileOutputStream(zipFile);             CheckedOutputStream checksum = new CheckedOutputStream(dest, new Adler32());             out=new ZipOutputStream(new BufferedOutputStream(checksum));             out.setMethod(ZipOutputStream.DEFLATED);             compress(source,out,source.getName());             result=true;         } catch (FileNotFoundException e) {             e.printStackTrace();         }finally {             if (out != null) {                 try {                     out.closeEntry();                 } catch (IOException e) {                     e.printStackTrace();                 }                 try {                     out.close();                 } catch (IOException e) {                     e.printStackTrace();                 }             }         }         if(result){             logger.info("done.");         }else{             logger.info("fail.");         }         return result;     }     private static void compress(File file,ZipOutputStream out,String mainFileName) {         if(file.isFile()){             FileInputStream fi= null;             BufferedInputStream origin=null;             try {                 fi = new FileInputStream(file);                 origin=new BufferedInputStream(fi, BUFFER);                 int index=file.getAbsolutePath().indexOf(mainFileName);                 String entryName=file.getAbsolutePath().substring(index);                 System.out.println(entryName);                 ZipEntry entry = new ZipEntry(entryName);                 out.putNextEntry(entry);                 byte[] data = new byte[BUFFER];                 int count;                 while((count = origin.read(data, 0, BUFFER)) != -1) {                     out.write(data, 0, count);                 }             } catch (FileNotFoundException e) {                 e.printStackTrace();             } catch (IOException e) {                 e.printStackTrace();             }finally {                 if (origin != null) {                     try {                         origin.close();                     } catch (IOException e) {                         e.printStackTrace();                     }                 }             }         }else if (file.isDirectory()){             File[] fs=file.listFiles();             if(fs!=null&&fs.length>0){                 for(File f:fs){                     compress(f,out,mainFileName);                 }             }         }     } 。

    /**      * 将zip文件解压到指定的目录,该zip文件必须是使用该类的zip方法压缩的文件      * @param zipFile      * @param destPath      * @return      */     public static boolean unzip(File zipFile,String destPath){         boolean result=false;         if(!zipFile.exists()){             logger.info(zipFile.getName()+" doesn't exist.");             return result;         }         File target=new File(destPath);         if(!target.exists()){             if(!target.mkdirs()){                 logger.info("cann't create file "+target.getName());                 return result;             }         }         String mainFileName=zipFile.getName().replace(".zip","");         File targetFile=new File(destPath+"/"+mainFileName);         if(targetFile.exists()){             logger.info(targetFile.getName()+" already exist.");             return result;         }         ZipInputStream zis =null;         logger.info("start unzip file ...");         try {             FileInputStream fis= new FileInputStream(zipFile);             CheckedInputStream checksum = new CheckedInputStream(fis, new Adler32());             zis = new ZipInputStream(new BufferedInputStream(checksum));             ZipEntry entry;             while((entry = zis.getNextEntry()) != null) {                 int count;                 byte data[] = new byte[BUFFER];                 String entryName=entry.getName();                 int index=entryName.indexOf(mainFileName);                 String newEntryName=destPath+"/"+entryName.substring(index);                 System.out.println(newEntryName);                 File temp=new File(newEntryName).getParentFile();                 if(!temp.exists()){                     if(!temp.mkdirs()){                         throw new RuntimeException("create file "+temp.getName() +" fail");                     }                 }                 FileOutputStream fos = new FileOutputStream(newEntryName);                 BufferedOutputStream dest = new BufferedOutputStream(fos,BUFFER);                 while ((count = zis.read(data, 0, BUFFER)) != -1) {                     dest.write(data, 0, count);                 }                 dest.flush();                 dest.close();             }             result=true;         } catch (FileNotFoundException e) {             e.printStackTrace();         } catch (IOException e) {             e.printStackTrace();         }finally {             if (zis != null) {                 try {                     zis.close();                 } catch (IOException e) {                     e.printStackTrace();                 }             }         }         if(result){             logger.info("done.");         }else{             logger.info("fail.");         }         return result;     }     public static void main(String[] args) throws IOException {         //ZipUtil.zip("D:/apache-tomcat-7.0.30", "d:/temp");         File zipFile=new File("D:/temp/apache-tomcat-7.0.30.zip");         ZipUtil.unzip(zipFile,"d:/temp") ;     } } 。

  。

  。

另一个压缩解压示例,二个工具大家参考使用吧 。

  。

复制代码代码如下:

package com.lanp,

  。

import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java.io.IOException; import java.util.zip.ZipEntry; import java.util.zip.ZipException; import java.util.zip.ZipFile; import java.util.zip.ZipInputStream,

/**  * 解压ZIP压缩文件到指定的目录  */ public final class ZipToFile {  /**   * 缓存区大小默认20480   */  private final static int FILE_BUFFER_SIZE = 20480;  private ZipToFile() {  }  /**   * 将指定目录的ZIP压缩文件解压到指定的目录   * @param zipFilePath  ZIP压缩文件的路径   * @param zipFileName  ZIP压缩文件名字   * @param targetFileDir  ZIP压缩文件要解压到的目录   * @return flag    布尔返回值   */  public static boolean unzip(String zipFilePath, String zipFileName, String targetFileDir){   boolean flag = false;   //1.判断压缩文件是否存在,以及里面的内容是否为空   File file = null;   //压缩文件(带路径)   ZipFile zipFile = null;   file = new File(zipFilePath + "/" + zipFileName);   System.out.println(">>>>>>解压文件【" + zipFilePath + "/" + zipFileName + "】到【" + targetFileDir + "】目录下<<<<<<");   if(false == file.exists()) {    System.out.println(">>>>>>压缩文件【" + zipFilePath + "/" + zipFileName + "】不存在<<<<<<");    return false;   } else if(0 == file.length()) {    System.out.println(">>>>>>压缩文件【" + zipFilePath + "/" + zipFileName + "】大小为0不需要解压<<<<<<");    return false;   } else {    //2.开始解压ZIP压缩文件的处理    byte[] buf = new byte[FILE_BUFFER_SIZE];    int readSize = -1;    ZipInputStream zis = null;    FileOutputStream fos = null;    try {     // 检查是否是zip文件     zipFile = new ZipFile(file);     zipFile.close();     // 判断目标目录是否存在,不存在则创建     File newdir = new File(targetFileDir);     if (false == newdir.exists()) {      newdir.mkdirs();      newdir = null;     }     zis = new ZipInputStream(new FileInputStream(file));     ZipEntry zipEntry = zis.getNextEntry();     // 开始对压缩包内文件进行处理     while (null != zipEntry) {      String zipEntryName = zipEntry.getName().replace('\\', '/');      //判断zipEntry是否为目录,如果是,则创建      if(zipEntry.isDirectory()) {       int indexNumber = zipEntryName.lastIndexOf('/');       File entryDirs = new File(targetFileDir + "/" + zipEntryName.substring(0, indexNumber));       entryDirs.mkdirs();       entryDirs = null;      } else {       try {        fos = new FileOutputStream(targetFileDir + "/" + zipEntryName);        while ((readSize = zis.read(buf, 0, FILE_BUFFER_SIZE)) != -1) {         fos.write(buf, 0, readSize);        }       } catch (Exception e) {        e.printStackTrace();        throw new RuntimeException(e.getCause());        } finally {        try {         if (null != fos) {          fos.close();         }        } catch (IOException e) {         e.printStackTrace();         throw new RuntimeException(e.getCause());         }       }      }      zipEntry = zis.getNextEntry();     }     flag = true;    } catch (ZipException e) {     e.printStackTrace();     throw new RuntimeException(e.getCause());     } catch (IOException e) {     e.printStackTrace();     throw new RuntimeException(e.getCause());     } finally {     try {      if (null != zis) {       zis.close();      }      if (null != fos) {       fos.close();      }     } catch (IOException e) {      e.printStackTrace();      throw new RuntimeException(e.getCause());      }    }   }   return flag;  } 。

 /**   * 测试用的Main方法   */  public static void main(String[] args) {   String zipFilePath = "C:\\home";   String zipFileName = "lp20120301.zip";   String targetFileDir = "C:\\home\\lp20120301";   boolean flag = ZipToFile.unzip(zipFilePath, zipFileName, targetFileDir);   if(flag) {    System.out.println(">>>>>>解压成功<<<<<<");   } else {    System.out.println(">>>>>>解压失败<<<<<<");   }  } 。

} 。

  。

最后此篇关于使用java基础类实现zip压缩和zip解压工具类分享的文章就讲到这里了,如果你想了解更多关于使用java基础类实现zip压缩和zip解压工具类分享的内容请搜索CFSDN的文章或继续浏览相关文章,希望大家以后支持我的博客! 。

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com