Android zip文件压缩解压缩

Android zip文件压缩解压缩,第1张

概述转载请注明出处,亲packagecom.once;importjava.io.File;importjava.util.ArrayList;importjava.util.LinkedList;/***文件夹遍历*@authoronce**/publicclassDirTraversal{/orecursionpublicstaticLinkedList<File>listLinkedFil
转载请注明出处,亲
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; }}
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 zip文件压缩解压缩

http://www.oschina.net/code/snippet_4873_4142

转载于:https://www.cnblogs.com/heimi/archive/2012/11/01/2749557.HTML

总结

以上是内存溢出为你收集整理的Android zip文件压缩解压缩全部内容,希望文章能够帮你解决Android zip文件压缩解压缩所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: https://www.outofmemory.cn/web/1117855.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存