zip文件目录解压

解压zip文件与删除文件目录


    /**
     * 解压zip文件
     * @param fis zip文件流
     * @param unZipDirectory 解压后存放目录的路径
     * @return 是否解压成功
     * @see [类、类#方法、类#成员]
     */
    public static boolean unZip(InputStream fis, String unZipDirectory)
    {
        ZipInputStream zis = null;
        try
        {
            zis = new ZipInputStream(fis);
            ZipEntry entry = null;
            int len = 0;
            while ((entry = zis.getNextEntry()) != null)
            {
                System.out.println("unZipDirectory=" + unZipDirectory + ", name=" + entry.getName());
                if (!entry.getName().contains("."))
                {
                    // fileTemp 获得ZIP中文件列表的路径
                    String[] fileTemp = entry.getName().replaceAll("\\\\", "/").replaceAll("//", "/").split("/");
                    
                    if (fileTemp == null)
                    {
                        continue;
                    }
                    String tmp = unZipDirectory;
                    for (String dirFile : fileTemp)
                    {
                        tmp = tmp + "/" + dirFile;
                        File newFile = new File(tmp);
                        if (!newFile.exists())
                        {
                            System.out.println("mkdirs.newFile=" + newFile);
                            newFile.mkdirs();
                        }
                    }
                }
                else
                {
                    byte[] buffer = new byte[1024];
                    FileOutputStream fos =
                        new FileOutputStream(new StringBuffer(unZipDirectory).append("/")
                            .append(entry.getName())
                            .toString());
                    while ((len = zis.read(buffer, 0, 1024)) != -1)
                    {
                        fos.write(buffer, 0, len);
                    }
                    fos.flush();
                    fos.close();
                }
            }
        }
        catch (Exception e)
        {
            e.printStackTrace();
            LogX.trace(TAG, "unZip.unZipDirectory.Exception=" + e.getMessage());
            return false;
        }
        finally
        {
            try
            {
                if (fis != null)
                {
                    fis.close();
                }
                if (zis != null)
                {
                    zis.close();
                }
            }
            catch (Exception e)
            {
                e.printStackTrace();
                LogX.trace(TAG, "unZip.unZipDirectory.closing.Exception=" + e.getMessage());
            }
        }
        return true;
    }
    
    /**
     * 删除目录下的所有文件和目录
     * @param filePath
     * @return 删除是否成功
     * @see [类、类#方法、类#成员]
     */
    public static boolean deleteAllFiles(String filePath)
    {
        boolean isComplete = false;
        File file = new File(filePath);
        if (!file.exists())
            return isComplete;
        String filesName[] = file.list();
        System.out.println("deleteAllFiles.fileName=" + Arrays.toString(filesName));
        if (filesName == null)
            return true;
        
        for (String temp : filesName)
        {
            if (temp != null)
            {
                deleteFile((new StringBuilder(String.valueOf(filePath))).append("/").append(temp).toString());
            }
        }
        
        return true;
    }
    
    /**
     * 删除文件
     * @param fileName 文件名
     * @return 删除文件是否成功
     * @see [类、类#方法、类#成员]
     */
    private static boolean deleteFile(String fileName)
    {
        boolean isComplete = false;
        File file = new File(fileName);
        if (!file.exists())
        {
            return true;
        }
        if (file.isDirectory())
        {
            isComplete = deleteAllFiles(fileName);
        }
        else
        {
            isComplete = true;
        }
        System.out.println("deleteFile.fileName=" + fileName);
        file.delete();
        return isComplete;
    }


  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值