博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
android zip解压缩(含有子目录)
阅读量:6501 次
发布时间:2019-06-24

本文共 3722 字,大约阅读时间需要 12 分钟。

  hot3.png

note: 如果目录中含有中文名称, 要用substr = new String(substr.getBytes("8859_1"), "GB2312");这样的语句转换,否则为乱码

/**        * 解压缩功能.        * 将ZIP_FILENAME文件解压到ZIP_DIR目录下.        * @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();                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;        }

转载于:https://my.oschina.net/wyyew/blog/40652

你可能感兴趣的文章
dotConnect for Oracle
查看>>
Eclipse下C/C++开发环境搭建
查看>>
Eclipse中设置在创建新类时自动生成注释
查看>>
我的友情链接
查看>>
CoreOS 手动更新
查看>>
golang 分页
查看>>
再论机械式针对接口编程
查看>>
25 个 Linux 性能监控工具
查看>>
C#程序员整理的Unity 3D笔记(十三):Unity 3D基于组件的思想
查看>>
Tengine-2.1.1 ngx_http_concat_module 400问题
查看>>
Windows中挂载安装ISO文件
查看>>
Wayland 1.0发布
查看>>
golang的goroutine是如何实现的?
查看>>
乐视云基于Kubernetes的PaaS平台建设
查看>>
R 学习笔记《十》 R语言初学者指南--图形工具
查看>>
PHP通过读取DOM抓取信息
查看>>
DICOM医学图像处理:DICOM网络传输
查看>>
nio和传统Io的区别
查看>>
移动端网页布局中需要注意事项以及解决方法总结
查看>>
(原创)Linux下查看系统版本号信息的方法
查看>>