• 自动下载网页上的zip文件并自动解压


        /**
         * 给定一个zip的url,实现zip的下载.下载到目的文件夹
         * id为用户给定的id,方便维护
         * <p>
         * 返回zip文件的最终文件路径
         */
        public static String downloadZIP(String[] UrlAndZipName, String fileDisDir) throws Exception {
            String strUrl = UrlAndZipName[0];
            String fileName = UrlAndZipName[1];
    
            URL url = new URL(strUrl);
            HttpURLConnection conn = (HttpURLConnection) url.openConnection();
            conn.setRequestProperty("User-Agent", "Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; rv:11.0) like Gecko");
            conn.connect();
            InputStream inStream = conn.getInputStream();
            ByteArrayOutputStream outStream = new ByteArrayOutputStream();
            byte[] buf = new byte[1024];
            int len = 0;
            while ((len = inStream.read(buf)) != -1) {
                outStream.write(buf, 0, len);
            }
            inStream.close();
            outStream.close();
    
            String zippath = fileDisDir + File.separator + fileName + ".zip";
            File file = new File(zippath);
            FileOutputStream op = new FileOutputStream(file);
            op.write(outStream.toByteArray());
            op.close();
    
            return zippath;
        }
    
    
        /**
         * 解压文件到指定目录
         * 解压后的文件名,和之前一致
         * <p>
         * 返回最终解压的文件夹路径
         */
        public static String unZipFiles( String zipFilePath, String descDir) throws IOException {
            File zipFile=new File(zipFilePath);
            ZipFile zip = new ZipFile(zipFile, Charset.forName("GBK"));//解决中文文件夹乱码
            String name = zip.getName().substring(zip.getName().lastIndexOf('\')+1, zip.getName().lastIndexOf('.'));    //此处的\针对windows,在linux用 / ,推荐改成File.sepator
    
            File pathFile = new File(descDir+ File.separator+name);
            if (!pathFile.exists()) {
                pathFile.mkdirs();
            }
    
            for (Enumeration<? extends ZipEntry> entries = zip.entries(); entries.hasMoreElements();) {
                ZipEntry entry = (ZipEntry) entries.nextElement();
                String zipEntryName = entry.getName();
                InputStream in = zip.getInputStream(entry);
                String outPath = (descDir +File.separator+ name +File.separator+ zipEntryName).replaceAll("\*", "/");
    
                // 判断路径是否存在,不存在则创建文件路径
                File file = new File(outPath.substring(0, outPath.lastIndexOf('/')));
                if (!file.exists()) {
                    file.mkdirs();
                }
                // 判断文件全路径是否为文件夹,如果是上面已经上传,不需要解压
                if (new File(outPath).isDirectory()) {
                    continue;
                }
                // 输出文件路径信息
    //          System.out.println(outPath);
    
                FileOutputStream out = new FileOutputStream(outPath);
                byte[] buf1 = new byte[1024];
                int len;
                while ((len = in.read(buf1)) > 0) {
                    out.write(buf1, 0, len);
                }
                in.close();
                out.close();
            }
            System.out.println("******************解压完毕********************");
            return (descDir+ File.separator+name);
        }
    

      

  • 相关阅读:
    ORACLE10g R2【单实例 FS→单实例FS】
    算法理解汇总
    ORACLE10g R2【RAC+ASM→单实例FS】
    [SHOI2008]仙人掌图 II——树形dp与环形处理
    ORACLE10g R2【RAC+ASM→RAC+ASM】
    [学习笔记]动态点分治
    Java实现第九届蓝桥杯阶乘位数
    Oracle 12C R2 on Linux 7.X Data Guard 搭建文档
    [ZJOI2015]幻想乡战略游戏——动态点分治
    metabase 安装文档
  • 原文地址:https://www.cnblogs.com/dhName/p/12560842.html
Copyright © 2020-2023  润新知