新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > Android zip文件壓縮解壓縮

        Android zip文件壓縮解壓縮

        作者: 時間:2016-09-12 來源:網(wǎng)絡(luò) 收藏

        1. [代碼]DirTraversal.java

        本文引用地址:http://www.104case.com/article/201609/305204.htm

        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 listLinkedFiles(String strPath) {

        LinkedList list = new LinkedList();

        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 listFiles(String strPath) {

        return refreshFileList(strPath);

        }

        public static ArrayList refreshFileList(String strPath) {

        ArrayList filelist = new ArrayList();

        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;

        }

        }

        2. [代碼]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 實(shí)現(xiàn)的Zip工具

        *

        * @author once

        */

        public class ZipUtils {

        private static final int BUFF_SIZE = 1024 * 1024; // 1M Byte

        /**

        * 批量壓縮文件(夾)

        *

        * @param resFileList 要壓縮的文件(夾)列表

        * @param zipFile 生成的壓縮文件

        * @throws IOException 當(dāng)壓縮過程出錯時拋出

        */

        public static void zipFiles(Collection 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 當(dāng)壓縮過程出錯時拋出

        */

        public static void zipFiles(Collection 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 解壓縮的目標(biāo)目錄

        * @throws IOException 當(dāng)解壓縮過程出錯時拋出

        */

        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) {


        上一頁 1 2 3 下一頁

        關(guān)鍵詞:

        評論


        相關(guān)推薦

        技術(shù)專區(qū)

        關(guān)閉
        主站蜘蛛池模板: 石景山区| 咸阳市| 方山县| 盐城市| 星子县| 东乡县| 灵山县| 高台县| 镇江市| 京山县| 济源市| 十堰市| 冷水江市| 子长县| 顺义区| 唐山市| 海盐县| 龙游县| 且末县| 平泉县| 尖扎县| 景洪市| 洪雅县| 丽水市| 皮山县| 江津市| 临海市| 堆龙德庆县| 瑞丽市| 南昌县| 砚山县| 额济纳旗| 双桥区| 疏附县| 盐城市| 星子县| 宜都市| 淄博市| 仪陇县| 阳东县| 茂名市|