• Android开发对压缩文件的处理


    本篇文章主要讲解有关压缩文件的处理:在开发中我们不免会遇到上传多个文件到服务器,这个时候我们就要用到压缩文件,将压缩到的文件上传到服务器,就非常的方便,下面是压缩文件的工具类,以供参考:

    public class ZipUtils {
        private static boolean isSuccess = false;
        public static boolean isSuccess() {
            return isSuccess;
        }
    
        /**
         * 压缩文件和文件夹
         *
         * @param srcFileString 要压缩的文件或文件夹
         * @param zipFileString 压缩完成的Zip路径
         * @throws Exception
         */
        public static void ZipFolder(String srcFileString, String zipFileString,String zipName)  {
            //创建ZIP
            ZipOutputStream outZip = null;
            try {
                //创建文件
                File file = new File(srcFileString);
                File outPath = new File(zipFileString);
                if (!outPath.exists()){
                    outPath.mkdirs();
                }
                outZip = new ZipOutputStream(new FileOutputStream(new File(outPath, zipName)));
                //压缩
                ZipFiles(file.getParent() + File.separator, file.getName(), outZip);
                isSuccess = true;
            } catch (Exception e) {
                isSuccess = false;
                e.printStackTrace();
            } finally {
                //完成和关闭
                if (outZip != null) {
                    try {
                        outZip.finish();
                        outZip.close();
                    }catch (IOException e) {
                        e.printStackTrace();
                    }
                }
            }
        }
    
        /**
         * 压缩文件
         *
         * @param folderString
         * @param fileString
         * @param zipOutputSteam
         * @throws Exception
         */
        private static void ZipFiles(String folderString, String fileString, ZipOutputStream zipOutputSteam)
                throws Exception {
            if (zipOutputSteam == null)
                return;
            FileInputStream inputStream = null;
            try {
                File file = new File(folderString + fileString);
                if (file.isFile()) {
                    ZipEntry zipEntry = new ZipEntry(fileString);
                    inputStream = new FileInputStream(file);
                    zipOutputSteam.putNextEntry(zipEntry);
                    int len;
                    byte[] buffer = new byte[4096];
                    while ((len = inputStream.read(buffer)) != -1) {
                        zipOutputSteam.write(buffer, 0, len);
                    }
                    zipOutputSteam.closeEntry();
                } else {
                    //文件夹
                    String fileList[] = file.list();
                    //没有子文件和压缩
                    if (fileList.length <= 0) {
                        ZipEntry zipEntry = new ZipEntry(fileString + File.separator);
                        zipOutputSteam.putNextEntry(zipEntry);
                        zipOutputSteam.closeEntry();
                    }
                    //子文件和递归
                    for (int i = 0; i < fileList.length; i++) {
                        ZipFiles(folderString + fileString + "/", fileList[i], zipOutputSteam);
                    }
                }
            } catch (IOException e) {
                e.printStackTrace();
            } finally {
                if (inputStream != null) {
                    try {
                        inputStream.close();
                    } catch (IOException ex) {
                        ex.printStackTrace();
                    }
                }
            }
        }
    }
  • 相关阅读:
    CMS系统漏洞分析溯源(第6题)
    敏感词在线检测-敏感词在线检测工具
    【Python Web】Flask框架(四)Bootstrap的使用及案例
    Halo 开源项目学习(五):评论与点赞
    Bard和ChatGPT的一些比较
    一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第n次落地时,共经过多少米?第n次反弹多高?
    用户运营中,怎么做好用户增长?
    基于openai api构建assistant
    知道策略模式!但不会在项目里使用?
    C++:函数指针进阶(一):包含数据和函数的函数指针
  • 原文地址:https://blog.csdn.net/qq_36451275/article/details/134434308