亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 系統 > Android > 正文

Android實現zip文件壓縮及解壓縮的方法

2020-04-11 11:28:19
字體:
來源:轉載
供稿:網友

本文實例講述了Android實現zip文件壓縮及解壓縮的方法。分享給大家供大家參考。具體如下:

DirTraversal.java如下:

package com.once;import java.io.File;import java.util.ArrayList;import java.util.LinkedList;/** * 文件夾遍歷 * @author once * */public class DirTraversal {  //no recursion  public static LinkedList<File> listLinkedFiles(String strPath) {    LinkedList<File> list = new LinkedList<File>();    File dir = new File(strPath);    File file[] = dir.listFiles();    for (int i = 0; i < file.length; i++) {      if (file[i].isDirectory())        list.add(file[i]);      else        System.out.println(file[i].getAbsolutePath());    }    File tmp;    while (!list.isEmpty()) {      tmp = (File) list.removeFirst();      if (tmp.isDirectory()) {        file = tmp.listFiles();        if (file == null)          continue;        for (int i = 0; i < file.length; i++) {          if (file[i].isDirectory())            list.add(file[i]);          else            System.out.println(file[i].getAbsolutePath());        }      } else {        System.out.println(tmp.getAbsolutePath());      }    }    return list;  }  //recursion  public static ArrayList<File> listFiles(String strPath) {    return refreshFileList(strPath);  }  public static ArrayList<File> refreshFileList(String strPath) {    ArrayList<File> filelist = new ArrayList<File>();    File dir = new File(strPath);    File[] files = dir.listFiles();    if (files == null)      return null;    for (int i = 0; i < files.length; i++) {      if (files[i].isDirectory()) {        refreshFileList(files[i].getAbsolutePath());      } else {        if(files[i].getName().toLowerCase().endsWith("zip"))          filelist.add(files[i]);      }    }    return filelist;  }}

ZipUtils.java如下:

package com.once;import java.io.*;import java.util.ArrayList;import java.util.Collection;import java.util.Enumeration;import java.util.zip.ZipEntry;import java.util.zip.ZipException;import java.util.zip.ZipFile;import java.util.zip.ZipOutputStream;/** * Java utils 實現的Zip工具 * * @author once */public class ZipUtils {  private static final int BUFF_SIZE = 1024 * 1024; // 1M Byte  /**   * 批量壓縮文件(夾)   *   * @param resFileList 要壓縮的文件(夾)列表   * @param zipFile 生成的壓縮文件   * @throws IOException 當壓縮過程出錯時拋出   */  public static void zipFiles(Collection<File> resFileList, File zipFile) throws IOException {    ZipOutputStream zipout = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(        zipFile), BUFF_SIZE));    for (File resFile : resFileList) {      zipFile(resFile, zipout, "");    }    zipout.close();  }  /**   * 批量壓縮文件(夾)   *   * @param resFileList 要壓縮的文件(夾)列表   * @param zipFile 生成的壓縮文件   * @param comment 壓縮文件的注釋   * @throws IOException 當壓縮過程出錯時拋出   */  public static void zipFiles(Collection<File> resFileList, File zipFile, String comment)      throws IOException {    ZipOutputStream zipout = new ZipOutputStream(new BufferedOutputStream(new FileOutputStream(        zipFile), BUFF_SIZE));    for (File resFile : resFileList) {      zipFile(resFile, zipout, "");    }    zipout.setComment(comment);    zipout.close();  }  /**   * 解壓縮一個文件   *   * @param zipFile 壓縮文件   * @param folderPath 解壓縮的目標目錄   * @throws IOException 當解壓縮過程出錯時拋出   */  public static void upZipFile(File zipFile, String folderPath) throws ZipException, IOException {    File desDir = new File(folderPath);    if (!desDir.exists()) {      desDir.mkdirs();    }    ZipFile zf = new ZipFile(zipFile);    for (Enumeration<?> entries = zf.entries(); entries.hasMoreElements();) {      ZipEntry entry = ((ZipEntry)entries.nextElement());      InputStream in = zf.getInputStream(entry);      String str = folderPath + File.separator + entry.getName();      str = new String(str.getBytes("8859_1"), "GB2312");      File desFile = new File(str);      if (!desFile.exists()) {        File fileParentDir = desFile.getParentFile();        if (!fileParentDir.exists()) {          fileParentDir.mkdirs();        }        desFile.createNewFile();      }      OutputStream out = new FileOutputStream(desFile);      byte buffer[] = new byte[BUFF_SIZE];      int realLength;      while ((realLength = in.read(buffer)) > 0) {        out.write(buffer, 0, realLength);      }      in.close();      out.close();    }  }  /**   * 解壓文件名包含傳入文字的文件   *   * @param zipFile 壓縮文件   * @param folderPath 目標文件夾   * @param nameContains 傳入的文件匹配名   * @throws ZipException 壓縮格式有誤時拋出   * @throws IOException IO錯誤時拋出   */  public static ArrayList<File> upZipSelectedFile(File zipFile, String folderPath,      String nameContains) throws ZipException, IOException {    ArrayList<File> fileList = new ArrayList<File>();     File desDir = new File(folderPath);    if (!desDir.exists()) {      desDir.mkdir();    }    ZipFile zf = new ZipFile(zipFile);    for (Enumeration<?> entries = zf.entries(); entries.hasMoreElements();) {      ZipEntry entry = ((ZipEntry)entries.nextElement());      if (entry.getName().contains(nameContains)) {        InputStream in = zf.getInputStream(entry);        String str = folderPath + File.separator + entry.getName();        str = new String(str.getBytes("8859_1"), "GB2312");        // str.getBytes("GB2312"),"8859_1" 輸出        // str.getBytes("8859_1"),"GB2312" 輸入        File desFile = new File(str);        if (!desFile.exists()) {          File fileParentDir = desFile.getParentFile();          if (!fileParentDir.exists()) {            fileParentDir.mkdirs();          }          desFile.createNewFile();        }        OutputStream out = new FileOutputStream(desFile);        byte buffer[] = new byte[BUFF_SIZE];        int realLength;        while ((realLength = in.read(buffer)) > 0) {          out.write(buffer, 0, realLength);        }        in.close();        out.close();        fileList.add(desFile);      }    }    return fileList;  }  /**   * 獲得壓縮文件內文件列表   *   * @param zipFile 壓縮文件   * @return 壓縮文件內文件名稱   * @throws ZipException 壓縮文件格式有誤時拋出   * @throws IOException 當解壓縮過程出錯時拋出   */  public static ArrayList<String> getEntriesNames(File zipFile) throws ZipException, IOException {    ArrayList<String> entryNames = new ArrayList<String>();    Enumeration<?> entries = getEntriesEnumeration(zipFile);    while (entries.hasMoreElements()) {      ZipEntry entry = ((ZipEntry)entries.nextElement());      entryNames.add(new String(getEntryName(entry).getBytes("GB2312"), "8859_1"));    }    return entryNames;  }  /**   * 獲得壓縮文件內壓縮文件對象以取得其屬性   *   * @param zipFile 壓縮文件   * @return 返回一個壓縮文件列表   * @throws ZipException 壓縮文件格式有誤時拋出   * @throws IOException IO操作有誤時拋出   */  public static Enumeration<?> getEntriesEnumeration(File zipFile) throws ZipException,      IOException {    ZipFile zf = new ZipFile(zipFile);    return zf.entries();  }  /**   * 取得壓縮文件對象的注釋   *   * @param entry 壓縮文件對象   * @return 壓縮文件對象的注釋   * @throws UnsupportedEncodingException   */  public static String getEntryComment(ZipEntry entry) throws UnsupportedEncodingException {    return new String(entry.getComment().getBytes("GB2312"), "8859_1");  }  /**   * 取得壓縮文件對象的名稱   *   * @param entry 壓縮文件對象   * @return 壓縮文件對象的名稱   * @throws UnsupportedEncodingException   */  public static String getEntryName(ZipEntry entry) throws UnsupportedEncodingException {    return new String(entry.getName().getBytes("GB2312"), "8859_1");  }  /**   * 壓縮文件   *   * @param resFile 需要壓縮的文件(夾)   * @param zipout 壓縮的目的文件   * @param rootpath 壓縮的文件路徑   * @throws FileNotFoundException 找不到文件時拋出   * @throws IOException 當壓縮過程出錯時拋出   */  private static void zipFile(File resFile, ZipOutputStream zipout, String rootpath)      throws FileNotFoundException, IOException {    rootpath = rootpath + (rootpath.trim().length() == 0 ? "" : File.separator)        + resFile.getName();    rootpath = new String(rootpath.getBytes("8859_1"), "GB2312");    if (resFile.isDirectory()) {      File[] fileList = resFile.listFiles();      for (File file : fileList) {        zipFile(file, zipout, rootpath);      }    } else {      byte buffer[] = new byte[BUFF_SIZE];      BufferedInputStream in = new BufferedInputStream(new FileInputStream(resFile),          BUFF_SIZE);      zipout.putNextEntry(new ZipEntry(rootpath));      int realLength;      while ((realLength = in.read(buffer)) != -1) {        zipout.write(buffer, 0, realLength);      }      in.close();      zipout.flush();      zipout.closeEntry();    }  }}

希望本文所述對大家的Android程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
国产精品视频中文字幕91| 日韩欧美中文第一页| 欧美日韩亚洲一区二| 国产精品v片在线观看不卡| 欧美成人第一页| 91精品国产91久久久| 亚洲视频国产视频| 黄网站色欧美视频| 隔壁老王国产在线精品| 97在线看免费观看视频在线观看| 午夜精品视频在线| 国产啪精品视频| 97免费在线视频| 日韩av在线免费观看一区| 国产不卡一区二区在线播放| 欧美日韩中文字幕在线视频| 成人乱色短篇合集| 精品国产一区二区在线| 九九久久久久99精品| 91在线精品播放| 亚洲男人第一网站| 成人免费看片视频| 欧美视频13p| 日韩av影院在线观看| 国产主播喷水一区二区| 91精品国产91久久久久久久久| 日本欧美在线视频| 亚洲一区二区福利| 一区二区欧美久久| 韩国欧美亚洲国产| 精品福利一区二区| 高清欧美性猛交xxxx| 精品性高朝久久久久久久| 欧美俄罗斯性视频| 久久久久久久久久av| 亚洲乱码国产乱码精品精天堂| 亚洲无线码在线一区观看| 91在线视频免费| 亚洲国产精品久久久久秋霞不卡| 亚洲国产免费av| 亚洲男人7777| 欧美成在线视频| 5278欧美一区二区三区| 这里只有精品在线观看| 亚洲aⅴ男人的天堂在线观看| 粗暴蹂躏中文一区二区三区| 国产精品久久久久久久久久久不卡| 久久久久久久影视| 欧美日产国产成人免费图片| 欧美精品videofree1080p| 久久综合色影院| 日韩精品免费一线在线观看| 8050国产精品久久久久久| 日韩av一区二区在线观看| 精品免费在线观看| 欧美日韩国产黄| 欧美日韩在线一区| 亚洲精品aⅴ中文字幕乱码| 亚洲伦理中文字幕| 日韩精品视频免费专区在线播放| 亚洲另类欧美自拍| 亚洲最大成人在线| 57pao成人国产永久免费| 久久精品视频导航| 69av在线播放| 国产精品尤物福利片在线观看| 精品国产一区二区三区四区在线观看| 日韩女优人人人人射在线视频| 欧美性xxxx极品高清hd直播| 亚洲精品之草原avav久久| 成人激情在线观看| 在线观看国产欧美| 成人性生交大片免费看小说| 亚洲欧美制服另类日韩| 成人黄色av免费在线观看| 国产精品99久久99久久久二8| 日本中文字幕不卡免费| 久久久久久高潮国产精品视| 欧美精品videosex极品1| 最近2019中文字幕在线高清| 高清在线视频日韩欧美| 国产精品网站大全| 欧美中文字幕视频在线观看| 日韩av有码在线| 国产极品jizzhd欧美| 国产精品日韩在线观看| 超碰91人人草人人干| 亚洲偷欧美偷国内偷| 久久久久久久999| 亚洲第一网站男人都懂| 国产噜噜噜噜久久久久久久久| 欧美伊久线香蕉线新在线| 亚洲欧美日韩综合| 欧美中在线观看| 欧美性猛交xxxx偷拍洗澡| 国产日韩精品综合网站| 欧美专区中文字幕| 日本久久久久亚洲中字幕| 日韩影视在线观看| 午夜精品久久久久久久久久久久久| 精品日本美女福利在线观看| 国产精品日韩电影| 欧美在线激情视频| 国产精品亚洲美女av网站| 亚洲天堂男人天堂| 国产精品久久久久久久午夜| 国产91精品青草社区| 久久精品国产亚洲精品| 亚洲欧美日韩爽爽影院| 亚洲乱码国产乱码精品精天堂| 97精品视频在线观看| 国产精品视频一区二区高潮| 91丨九色丨国产在线| 色综合视频一区中文字幕| 欧美激情影音先锋| 欧美一级淫片播放口| 精品视频在线播放色网色视频| 91麻豆国产语对白在线观看| 欧美大片免费观看| 国产在线观看不卡| 久久久久久久一区二区三区| 精品国产依人香蕉在线精品| 91中文在线观看| 成人两性免费视频| 欧美日韩一区二区在线播放| 狠狠做深爱婷婷久久综合一区| 丝袜亚洲另类欧美重口| 欧美一区二区.| 亚洲精品自拍视频| 日韩专区中文字幕| 国产一区二区日韩精品欧美精品| 国产精品老女人视频| 久久天天躁狠狠躁夜夜躁| 中文字幕日韩欧美在线视频| 欧美在线精品免播放器视频| 日韩欧美中文字幕在线播放| 久久久午夜视频| 欧洲美女7788成人免费视频| 最近2019中文字幕mv免费看| www国产精品视频| 国产日韩在线观看av| 欧美黑人国产人伦爽爽爽| 久久久久久久色| 丝袜亚洲欧美日韩综合| 国产精品久久久久久久av电影| 欧美小视频在线观看| 色偷偷噜噜噜亚洲男人的天堂| 中文欧美日本在线资源| 欧美日韩在线视频首页| 国产精品福利小视频| 在线视频日本亚洲性| 亚洲久久久久久久久久| 国产成人免费av| 亚洲欧美变态国产另类| 亚洲国产精彩中文乱码av在线播放| 一区二区亚洲欧洲国产日韩| 98精品在线视频| 久久精品91久久久久久再现| 欧美精品一区三区| 国产精品夫妻激情| 精品国产1区2区| 波霸ol色综合久久| 青草成人免费视频| 久久久久一本一区二区青青蜜月|