国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android Zip解壓縮工具類分享

2019-10-22 18:18:21
字體:
來源:轉載
供稿:網友

本文實例為大家分享了Android Zip解壓縮工具類的具體代碼,供大家參考,具體內容如下

package com.example.zip.commons.utils;import android.util.Log;import java.io.File;import java.io.FileInputStream;import java.io.FileOutputStream;import java.io.InputStream;import java.util.ArrayList;import java.util.List;import java.util.zip.ZipEntry;import java.util.zip.ZipFile;import java.util.zip.ZipInputStream;import java.util.zip.ZipOutputStream;/** * @author: lijuan * @description: 解壓ZIP文件 * @date: 2017-04-11 * @time: 09:22 */public class ZipUtils { public static final String TAG="ZIP"; public ZipUtils(){ } /**  * 解壓zip到指定的路徑  * @param zipFileString ZIP的名稱  * @param outPathString 要解壓縮路徑  * @throws Exception  */ public static void UnZipFolder(String zipFileString, String outPathString) throws Exception {  ZipInputStream inZip = new ZipInputStream(new FileInputStream(zipFileString));  ZipEntry zipEntry;  String szName = "";  while ((zipEntry = inZip.getNextEntry()) != null) {   szName = zipEntry.getName();   if (zipEntry.isDirectory()) {    //獲取部件的文件夾名    szName = szName.substring(0, szName.length() - 1);    File folder = new File(outPathString + File.separator + szName);    folder.mkdirs();   } else {    Log.e(TAG,outPathString + File.separator + szName);    File file = new File(outPathString + File.separator + szName);    if (!file.exists()){     Log.e(TAG, "Create the file:" + outPathString + File.separator + szName);     file.getParentFile().mkdirs();     file.createNewFile();    }    // 獲取文件的輸出流    FileOutputStream out = new FileOutputStream(file);    int len;    byte[] buffer = new byte[1024];    // 讀取(字節)字節到緩沖區    while ((len = inZip.read(buffer)) != -1) {     // 從緩沖區(0)位置寫入(字節)字節     out.write(buffer, 0, len);     out.flush();    }    out.close();   }  }  inZip.close(); } public static void UnZipFolder(String zipFileString, String outPathString,String szName) throws Exception {  ZipInputStream inZip = new ZipInputStream(new FileInputStream(zipFileString));  ZipEntry zipEntry;   while ((zipEntry = inZip.getNextEntry()) != null) {   //szName = zipEntry.getName();   if (zipEntry.isDirectory()) {    //獲取部件的文件夾名    szName = szName.substring(0, szName.length() - 1);    File folder = new File(outPathString + File.separator + szName);    folder.mkdirs();   } else {    Log.e(TAG,outPathString + File.separator + szName);    File file = new File(outPathString + File.separator + szName);    if (!file.exists()){     Log.e(TAG, "Create the file:" + outPathString + File.separator + szName);     file.getParentFile().mkdirs();     file.createNewFile();    }    // 獲取文件的輸出流    FileOutputStream out = new FileOutputStream(file);    int len;    byte[] buffer = new byte[1024];    // 讀取(字節)字節到緩沖區    while ((len = inZip.read(buffer)) != -1) {     // 從緩沖區(0)位置寫入(字節)字節     out.write(buffer, 0, len);     out.flush();    }    out.close();   }  }  inZip.close(); } /**  * 壓縮文件和文件夾  * @param srcFileString 要壓縮的文件或文件夾  * @param zipFileString 解壓完成的Zip路徑  * @throws Exception  */ public static void ZipFolder(String srcFileString, String zipFileString)throws Exception {  //創建ZIP  ZipOutputStream outZip = new ZipOutputStream(new FileOutputStream(zipFileString));  //創建文件  File file = new File(srcFileString);  //壓縮  ZipFiles(file.getParent()+File.separator, file.getName(), outZip);  //完成和關閉  outZip.finish();  outZip.close(); } /**  * 壓縮文件  * @param folderString  * @param fileString  * @param zipOutputSteam  * @throws Exception  */ private static void ZipFiles(String folderString, String fileString, ZipOutputStream zipOutputSteam)throws Exception{  if(zipOutputSteam == null)   return;  File file = new File(folderString+fileString);  if (file.isFile()) {   ZipEntry zipEntry = new ZipEntry(fileString);   FileInputStream inputStream = new FileInputStream(file);   zipOutputSteam.putNextEntry(zipEntry);   int len;   byte[] buffer = new byte[4096];   while((len=inputStream.read(buffer)) != -1)   {    zipOutputSteam.write(buffer, 0, len);   }   zipOutputSteam.closeEntry();  }  else {   //文件夾   String fileList[] = file.list();   //沒有子文件和壓縮   if (fileList.length <= 0) {    ZipEntry zipEntry = new ZipEntry(fileString+File.separator);    zipOutputSteam.putNextEntry(zipEntry);    zipOutputSteam.closeEntry();   }   //子文件和遞歸   for (int i = 0; i < fileList.length; i++) {    ZipFiles(folderString, fileString+ File.separator+fileList[i], zipOutputSteam);   }  } } /**  * 返回zip的文件輸入流  * @param zipFileString zip的名稱  * @param fileString  ZIP的文件名  * @return InputStream  * @throws Exception  */ public static InputStream UpZip(String zipFileString, String fileString)throws Exception {  ZipFile zipFile = new ZipFile(zipFileString);  ZipEntry zipEntry = zipFile.getEntry(fileString);  return zipFile.getInputStream(zipEntry); } /**  * 返回ZIP中的文件列表(文件和文件夾)  * @param zipFileString  ZIP的名稱  * @param bContainFolder 是否包含文件夾  * @param bContainFile  是否包含文件  * @return  * @throws Exception  */ public static List<File> GetFileList(String zipFileString, boolean bContainFolder, boolean bContainFile)throws Exception {  List<File> fileList = new ArrayList<File>();  ZipInputStream inZip = new ZipInputStream(new FileInputStream(zipFileString));  ZipEntry zipEntry;  String szName = "";  while ((zipEntry = inZip.getNextEntry()) != null) {   szName = zipEntry.getName();   if (zipEntry.isDirectory()) {    // 獲取部件的文件夾名    szName = szName.substring(0, szName.length() - 1);    File folder = new File(szName);    if (bContainFolder) {     fileList.add(folder);    }   } else {    File file = new File(szName);    if (bContainFile) {     fileList.add(file);    }   }  }  inZip.close();  return fileList; }}

添加權限

<!-- 允許應用程序寫數據到外部存儲設備(主要是SD卡) -->  <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />  <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />  <!-- 在sdcard中創建/刪除文件的權限 -->  <uses-permission android:name="android.permission.MOUNT_UNMOUNT_FILESYSTEMS" />

在具體的場景中測試一下

ZipUtils.UnZipFolder(AppConfig.DOWNLOAD_PATH + info.getFileName(), AppConfig.UNZIP_PATH);

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 保德县| 东安县| 历史| 桃园市| 嘉荫县| 中阳县| 师宗县| 大连市| 永登县| 昌黎县| 上林县| 唐河县| 华阴市| 大足县| 澄江县| 长泰县| 贡嘎县| 嘉鱼县| 门头沟区| 潞城市| 个旧市| 伊川县| 军事| 宜都市| 高平市| 新民市| 定陶县| 贞丰县| 尉犁县| 克什克腾旗| 八宿县| 开江县| 灵台县| 密云县| 岳池县| 崇义县| 普定县| 尼勒克县| 河南省| 鹤峰县| 鹤峰县|