Android Zip文件解压缩代码

来源:互联网 发布:pps网络电视apk下载 编辑:程序博客网 时间:2024/05/19 00:11
/**    * 解压缩功能.    * 将zipFile文件解压到folderPath目录下.    * @throws Exception*/    public int upZipFile(File zipFile, String folderPath)throws ZipException,IOException {    //public static void upZipFile() throws Exception{        ZipFile zfile=new ZipFile(zipFile);        Enumeration zList=zfile.entries();        ZipEntry ze=null;        byte[] buf=new byte[1024];        while(zList.hasMoreElements()){            ze=(ZipEntry)zList.nextElement();                if(ze.isDirectory()){                Log.d("upZipFile", "ze.getName() = "+ze.getName());                String dirstr = folderPath + ze.getName();                //dirstr.trim();                dirstr = new String(dirstr.getBytes("8859_1"), "GB2312");                Log.d("upZipFile", "str = "+dirstr);                File f=new File(dirstr);                f.mkdir();                continue;            }            Log.d("upZipFile", "ze.getName() = "+ze.getName());            OutputStream os=new BufferedOutputStream(new FileOutputStream(getRealFileName(folderPath, ze.getName())));            InputStream is=new BufferedInputStream(zfile.getInputStream(ze));            int readLen=0;            while ((readLen=is.read(buf, 0, 1024))!=-1) {                os.write(buf, 0, readLen);            }            is.close();            os.close();            }        zfile.close();        Log.d("upZipFile", "finishssssssssssssssssssss");        return 0;    }    /**    * 给定根目录,返回一个相对路径所对应的实际文件名.    * @param baseDir 指定根目录    * @param absFileName 相对路径名,来自于ZipEntry中的name    * @return java.io.File 实际的文件*/    public static File getRealFileName(String baseDir, String absFileName){        String[] dirs=absFileName.split("/");        File ret=new File(baseDir);        String substr = null;        if(dirs.length>1){            for (int i = 0; i < dirs.length-1;i++) {                substr = dirs[i];                try {                    //substr.trim();                    substr = new String(substr.getBytes("8859_1"), "GB2312");                                    } catch (UnsupportedEncodingException e) {                    // TODO Auto-generated catch block                    e.printStackTrace();                }                ret=new File(ret, substr);                            }            Log.d("upZipFile", "1ret = "+ret);            if(!ret.exists())                ret.mkdirs();            substr = dirs[dirs.length-1];            try {                //substr.trim();                substr = new String(substr.getBytes("8859_1"), "GB2312");                Log.d("upZipFile", "substr = "+substr);            } catch (UnsupportedEncodingException e) {                // TODO Auto-generated catch block                e.printStackTrace();            }                        ret=new File(ret, substr);            Log.d("upZipFile", "2ret = "+ret);            return ret;        }        return ret;    }


原创粉丝点击