压缩解压zip文件包
生活随笔
收集整理的這篇文章主要介紹了
压缩解压zip文件包
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
import java.io.*;import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.tools.zip.*;
import java.util.Enumeration;
?
public class AntZip {// 日志對象private static Log logger = LogFactory.getLog(AntZip.class);/*** <壓縮指定的文件夾>* <該方法只能壓縮文件夾>* @param zipDirectory 需要壓縮的文件夾全路徑* @param destFile 壓縮后的文件存放路徑,包括壓縮后的文件名* @see [類、類#方法、類#成員]*/public static void doZip(String zipDirectory, String destFile){File zipDir = new File(zipDirectory);try{ZipOutputStream zipOut = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(destFile)));handleDir(zipDir, zipOut);zipOut.close();}catch (IOException e){logger.error(Global.LOG_EXCEPTION_NAME, e);}}/** * <由doZip調(diào)用,遞歸完成目錄文件讀取>* <功能詳細(xì)描述>* @param dir 文件* @param zipOut 壓縮輸出對象* @throws IOException* @see [類、類#方法、類#成員]*/private static void handleDir(File dir, ZipOutputStream zipOut)throws IOException{FileInputStream fileIn;File[] files;files = dir.listFiles();if (files.length == 0){//如果目錄為空,則單獨(dú)創(chuàng)建之. //ZipEntry的isDirectory()方法中,目錄以"/"結(jié)尾. zipOut.putNextEntry(new ZipEntry(dir.toString() + "/"));zipOut.closeEntry();}else{//如果目錄不為空,則分別處理目錄和文件. for (File fileName : files){if (fileName.isDirectory()){handleDir(fileName, zipOut);}else{fileIn = new FileInputStream(fileName);String path = fileName.getPath().substring(fileName.getPath().lastIndexOf("\\") + 1);zipOut.putNextEntry(new ZipEntry(path));byte[] buf = new byte[1024];int readedBytes = 0;while ((readedBytes = fileIn.read(buf)) > 0){zipOut.write(buf, 0, readedBytes);}fileIn.close();zipOut.closeEntry();}}}}/*** <解壓指定zip文件>* <解壓指定zip壓縮包到指定目錄>* @param unZipfileName 壓縮包* @param destDir 目標(biāo)目錄* @see [類、類#方法、類#成員]*/@SuppressWarnings("rawtypes")public static void unZip(String unZipfileName, String destDir){//unZipfileName需要解壓的zip文件名 FileOutputStream fileOut;File file;InputStream inputStream;try{ZipFile zipFile = new ZipFile(unZipfileName);for (Enumeration entries = zipFile.getEntries(); entries.hasMoreElements();){ZipEntry entry = (ZipEntry)entries.nextElement();file = new File(entry.getName());if (entry.isDirectory()){file.mkdirs();}else{//如果指定文件的目錄不存在,則創(chuàng)建之. String path = destDir + "/" + file.getParent();File parent = new File(path);if (!parent.exists()){parent.mkdirs();}inputStream = zipFile.getInputStream(entry);fileOut = new FileOutputStream(destDir + "/" + file);byte[] buf = new byte[1024];int readedBytes = 0;while ((readedBytes = inputStream.read(buf)) > 0){fileOut.write(buf, 0, readedBytes);}fileOut.close();inputStream.close();}}zipFile.close();}catch (IOException e){logger.error(Global.LOG_EXCEPTION_NAME, e);}} }?
總結(jié)
以上是生活随笔為你收集整理的压缩解压zip文件包的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: [经典]数据产品需求文档怎么写?
- 下一篇: ppt如何旋转流程图_画流程图 | 你还