Java壓縮解壓縮工具類(lèi)
更新時(shí)間:2018年12月15日 15:59:38 作者:一掬凈土
這篇文章主要為大家詳細(xì)介紹了Java壓縮解壓縮工具類(lèi),如何壓縮單個(gè)文件,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
本文實(shí)例為大家分享了Java壓縮解壓縮工具類(lèi)的具體代碼,供大家參考,具體內(nèi)容如下
package com.wdy.tools.utils.pressuitl; import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream; import java.util.zip.ZipEntry; import java.util.zip.ZipFile; import java.util.zip.ZipInputStream; import java.util.zip.ZipOutputStream; import org.apache.commons.logging.Log; import com.wdy.tools.utils.LogUtil; /** * 壓縮/解壓縮工具類(lèi)(zip格式) * * @author wdy * @date 2016-08-23 */ public class PressUtil { private static final Log log = LogUtil.getLog(PressUtil.class); public static void main(String[] args) { // PressUtil.ZipMultiFile("d:\\nwp_trans\\nwp_h\\", "d:\\nwp_trans\\nwp_h\\wdy.zip"); String sourceFilePath = "d:\\nwp_trans\\nwp_h\\"; String zipFilePath = "d:\\nwp_trans\\nwp_h\\"; String fileName = "wdy"; boolean flag = PressUtil.fileToZip(sourceFilePath, zipFilePath, fileName); if(flag){ log.info("文件打包成功!"); }else{ log.info("文件打包失敗!"); } } /** * 將存放在sourceFilePath目錄下的源文件,打包成fileName名稱(chēng)的zip文件,并存放到zipFilePath路徑下 * @param sourceFilePath :待壓縮的文件路徑 * @param zipFilePath :壓縮后存放路徑 * @param fileName :壓縮后文件的名稱(chēng)(不包括擴(kuò)展名) * @return */ @SuppressWarnings("resource") public static boolean fileToZip(String sourceFilePath,String zipFilePath,String fileName){ boolean flag = false; File sourceFile = new File(sourceFilePath); FileInputStream fis = null; BufferedInputStream bis = null; FileOutputStream fos = null; ZipOutputStream zos = null; if(sourceFile.exists() == false){ log.info("待壓縮的文件目錄:"+sourceFilePath+"不存在."); }else{ try { File zipFile = new File(zipFilePath + "/" + fileName +".zip"); if(zipFile.exists()){ log.info(zipFilePath + "目錄下存在名字為:" + fileName +".zip" +"打包文件."); }else{ File[] sourceFiles = sourceFile.listFiles(); if(null == sourceFiles || sourceFiles.length<1){ log.info("待壓縮的文件目錄:" + sourceFilePath + "里面不存在文件,無(wú)需壓縮."); }else{ fos = new FileOutputStream(zipFile); zos = new ZipOutputStream(new BufferedOutputStream(fos)); byte[] bufs = new byte[1024*10]; for(int i=0;i<sourceFiles.length;i++){ //創(chuàng)建ZIP實(shí)體,并添加進(jìn)壓縮包 ZipEntry zipEntry = new ZipEntry(sourceFiles[i].getName()); zos.putNextEntry(zipEntry); //讀取待壓縮的文件并寫(xiě)進(jìn)壓縮包里 fis = new FileInputStream(sourceFiles[i]); bis = new BufferedInputStream(fis, 1024*10); int read = 0; while((read=bis.read(bufs, 0, 1024*10)) != -1){ zos.write(bufs,0,read); } } flag = true; } } } catch (FileNotFoundException e) { e.printStackTrace(); throw new RuntimeException(e); } catch (IOException e) { e.printStackTrace(); throw new RuntimeException(e); } finally{ //關(guān)閉流 try { if(null != bis) bis.close(); if(null != zos) zos.close(); } catch (IOException e) { e.printStackTrace(); throw new RuntimeException(e); } } } return flag; } /** * 壓縮單個(gè)文件 * @param filePath 要被壓縮的文件的全路徑,包含文件名d:/hello.txt * @param zipPath 壓縮后的全路徑,包含文件名d:/hello.zip */ public static void zipOneFile(String filePath, String zipPath) { try { File file = new File(filePath); File zipFile = new File(zipPath); InputStream input = new FileInputStream(file); ZipOutputStream zipOut = new ZipOutputStream(new FileOutputStream(zipFile)); zipOut.putNextEntry(new ZipEntry(file.getName())); int temp = 0; while ((temp = input.read()) != -1) { zipOut.write(temp); } input.close(); zipOut.close(); } catch (Exception e) { e.printStackTrace(); } } }
以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。
您可能感興趣的文章:
- java 壓縮和解壓縮Zip、Jar、Gzip文件實(shí)例代碼
- Java8 Zip 壓縮與解壓縮的實(shí)現(xiàn)
- Java GZIP壓縮與解壓縮代碼實(shí)例
- java實(shí)現(xiàn)哈夫曼壓縮與解壓縮的方法
- Java實(shí)現(xiàn)的zip壓縮及解壓縮工具類(lèi)示例
- java ant包中的org.apache.tools.zip實(shí)現(xiàn)壓縮和解壓縮實(shí)例詳解
- Java解壓縮zip - 解壓縮多個(gè)文件或文件夾實(shí)例
- 實(shí)例展示使用Java壓縮和解壓縮7z文件的方法
- 通過(guò)java api實(shí)現(xiàn)解壓縮zip示例
- 利用Java實(shí)現(xiàn)zip壓縮/解壓縮
- 用Java進(jìn)行zip文件壓縮與解壓縮
相關(guān)文章
Java中for(;;)和while(true)的區(qū)別
這篇文章主要介紹了 Java中for(;;)和while(true)的區(qū)別,文章圍繞for(;;)和while(true)的相關(guān)自來(lái)哦展開(kāi)詳細(xì)內(nèi)容,需要的小伙伴可以參考一下,希望對(duì)大家有所幫助2021-11-11Java設(shè)計(jì)模塊系列之書(shū)店管理系統(tǒng)單機(jī)版(一)
這篇文章主要為大家詳細(xì)介紹了Java單機(jī)版的書(shū)店管理系統(tǒng)設(shè)計(jì)模塊和思想第一章,感興趣的小伙伴們可以參考一下2016-08-08Java 8中Stream API的這些奇技淫巧!你Get了嗎?
這篇文章主要介紹了Java 8中Stream API的這些奇技淫巧!你Get了嗎?文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08Java實(shí)現(xiàn)跳躍表(skiplist)的簡(jiǎn)單實(shí)例
這篇文章主要介紹了Java編程中跳躍表的概念和實(shí)現(xiàn)原理,并簡(jiǎn)要敘述了它的結(jié)構(gòu),具有一定參考價(jià)值,需要的朋友可以了解下。2017-09-09解決rocketmq-client日志保存路徑的問(wèn)題
這篇文章主要介紹了解決rocketmq-client日志保存路徑的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2021-07-07Spring如何基于aop實(shí)現(xiàn)事務(wù)控制
這篇文章主要介紹了Spring如何基于aop實(shí)現(xiàn)事務(wù)控制,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-03-03