《使用java基础类实现zip压缩和zip解压工具类分享.doc》由会员分享,可在线阅读,更多相关《使用java基础类实现zip压缩和zip解压工具类分享.doc(14页珍藏版)》请在金锄头文库上搜索。
1、使用java基础类实现zip压缩和zip解压工具类分享使用java基础类写的一个简单的zip压缩解压工具类,实现了指定目录压缩到和该目录同名的zip文件和将zip文件解压到指定的目录的功能使用java基础类写的一个简单的zip压缩解压工具类复制代码 代码如下:package .helper;import java.io.*;import java.util.logging.Logger;import java.util.zip.*;public class ZipUtil private final static Logger logger = Logger.getLogger(ZipUtil
2、.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
3、()logger.info(sourceFilePath+ doesnt 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;elseif(!zipF
4、ile.getParentFile().exists()if(!zipFile.getParentFile().mkdirs()logger.info(cannt 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 CheckedOutpu
5、tStream(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.
6、printStackTrace();try out.close(); catch (IOException e) e.printStackTrace();if(result)logger.info(done.);elselogger.info(fail.);return result;private static void compress(File file,ZipOutputStream out,String mainFileName) if(file.isFile()FileInputStream fi= null;BufferedInputStream origin=null;try
7、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 byt
8、eBUFFER;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.isDire
9、ctory()File fs=file.listFiles();if(fs!=null&fs.length0)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.g
10、etName()+ doesnt exist.);return result;File target=new File(destPath);if(!target.exists()if(!target.mkdirs()logger.info(cannt create file +target.getName();return result;String mainFileName=zipFile.getName().replace(.zip,);File targetFile=new File(destPath+/+mainFileName);if(targetFile.exists()logge
11、r.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)
12、;ZipEntry entry;while(entry = zis.getNextEntry() != null) int count;byte data = new byteBUFFER;String entryName=entry.getName();int index=entryName.indexOf(mainFileName);String newEntryName=destPath+/+entryName.substring(index);System.out.println(newEntryName);File temp=new File(newEntryName).getPar
13、entFile();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, co
14、unt);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.);elselogger.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) ;