Java壓縮檔案生成工具類
在工作過程中,需要將一個資料夾生成壓縮檔案,然後提供給使用者下載。所以自己寫了一個壓縮檔案的工具類。該工具類支援單個檔案和資料夾壓縮。放程式碼:
import java.io.BufferedOutputStream; import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import org.apache.tools.zip.ZipEntry; import org.apache.tools.zip.ZipOutputStream; /** * @project: Test * @author chenssy * @date 2013-7-28 * @Description: 檔案壓縮工具類 * 將指定檔案/資料夾壓縮成zip、rar壓縮檔案 */ public class CompressedFileUtil { /** * 預設建構函式 */ public CompressedFileUtil(){ } /** * @desc 將原始檔/資料夾生成指定格式的壓縮檔案,格式zip * @param resourePath 原始檔/資料夾 * @param targetPath 目的壓縮檔案儲存路徑 * @return void * @throws Exception */ public void compressedFile(String resourcesPath,String targetPath) throws Exception{ File resourcesFile = new File(resourcesPath); //原始檔 File targetFile = new File(targetPath); //目的 //如果目的路徑不存在,則新建 if(!targetFile.exists()){ targetFile.mkdirs(); } String targetName = resourcesFile.getName()+".zip"; //目的壓縮檔名 FileOutputStream outputStream = new FileOutputStream(targetPath+"//"+targetName); ZipOutputStream out = new ZipOutputStream(new BufferedOutputStream(outputStream)); createCompressedFile(out, resourcesFile, ""); out.close(); } /** * @desc 生成壓縮檔案。 * 如果是資料夾,則使用遞迴,進行檔案遍歷、壓縮 * 如果是檔案,直接壓縮 * @param out 輸出流 * @param file 目標檔案 * @return void * @throws Exception */ public void createCompressedFile(ZipOutputStream out,File file,String dir) throws Exception{ //如果當前的是資料夾,則進行進一步處理 if(file.isDirectory()){ //得到檔案列表資訊 File[] files = file.listFiles(); //將資料夾新增到下一級打包目錄 out.putNextEntry(new ZipEntry(dir+"/")); dir = dir.length() == 0 ? "" : dir +"/"; //迴圈將資料夾中的檔案打包 for(int i = 0 ; i < files.length ; i++){ createCompressedFile(out, files[i], dir + files[i].getName()); //遞迴處理 } } else{ //當前的是檔案,打包處理 //檔案輸入流 FileInputStream fis = new FileInputStream(file); out.putNextEntry(new ZipEntry(dir)); //進行寫操作 int j = 0; byte[] buffer = new byte[1024]; while((j = fis.read(buffer)) > 0){ out.write(buffer,0,j); } //關閉輸入流 fis.close(); } } public static void main(String[] args){ CompressedFileUtil compressedFileUtil = new CompressedFileUtil(); try { compressedFileUtil.compressedFile("G://zip", "F://zip"); System.out.println("壓縮檔案已經生成..."); } catch (Exception e) { System.out.println("壓縮檔案生成失敗..."); e.printStackTrace(); } } }
執行程式結果如下:
壓縮之前的檔案目錄結構:
提示:如果是使用java.util下的java.util.zip進行打包處理,可能會出現中文亂碼問題,這是因為java的zip方法不支援編碼格式的更改,我們可以使用ant.java下的zip工具類來進行打包處理。所以需要將ant.jar匯入專案的lib目錄下。
相關文章
- java 壓縮(解壓)檔案或者資料夾工具類Java
- java 生成 zip格式 壓縮檔案Java
- Java檔案壓縮Java
- java 檔案壓縮Java
- 檔案壓縮和解壓縮
- 檔案壓縮增強工具-pgzip
- java中 檔案壓縮處理Java
- java中檔案如何加密壓縮?Java加密
- java 把檔案壓縮成 zipJava
- Java學習筆記之I/O流(讀取壓縮檔案以及壓縮檔案)Java筆記
- javaWeb不生成臨時檔案實現壓縮檔案下載JavaWeb
- NCH ExpressZip Plus for mac(檔案解壓縮工具)ExpressMac
- .NET 壓縮/解壓檔案
- gulp壓縮檔案
- aix 檔案的壓縮與解壓縮AI
- 電腦怎麼壓縮檔案 檔案壓縮方法詳解
- Linux中檔案的壓縮和解壓縮Linux
- ArchCommander for Mac(壓縮檔案存檔工具)v2.1Mac
- Mac壓縮檔案怎麼加密?BetterZip加密Word壓縮檔案教程Mac加密
- Ubuntu 壓縮檔案命令Ubuntu
- c#壓縮檔案C#
- Linux 檔案壓縮Linux
- HTTP 之 檔案壓縮HTTP
- WindowsApi 解壓縮檔案WindowsAPI
- 使用gzip壓縮檔案
- cpio檔案解壓縮
- Java實現檔案壓縮與解壓[zip格式,gzip格式]Java
- java實現zip壓縮檔案/資料夾Java
- linux下的檔案的壓縮和解壓縮Linux
- 強大的PDF檔案壓縮工具:PDF Squeezer for MacMac
- JavaScript的js檔案壓縮和格式化工具JavaScriptJS
- 工具新特性1-expdp 壓縮dump檔案集
- 壓縮歸檔檔案審查工具p7zip-full
- linux檔案壓縮和解壓命令Linux
- 常見檔案解壓和壓縮
- C# 檔案流壓縮解壓C#
- JAVA壓縮和解壓縮Java
- java 檔案處理 工具類Java