Java获取压缩包内文件数_java获取递归获取嵌套压缩包(zip和rar)中的所有文件
作者:张昌昌
为了获取一个压缩包中的文件,而该压缩包里可能又含有压缩包 、文件夹、文件夹里又包含压缩包、文件等各种嵌套的情况,采用广度优先遍历和深度优先遍历的方法解决了此问题。
public static List getFilesOfZipAndRar(String zipPath) throws IOException
{
String destPath = zipPath.substring(0,zipPath.lastIndexOf(".")) + "/";
//先将该压缩文件解压
if(zipPath.contains(".zip"))
unZipFile(new File(zipPath),destPath);
if(zipPath.contains(".rar"))
unRarFile(new File(zipPath),destPath);
//进入解压目录,将该目录的所有zip都解压
recursiveCompressedFile(new File(destPath));
//得到该目录下的所有文件
Iterator iterator = Directory.walk(destPath).iterator();
List files = new ArrayList();
File file = null;
while(iterator.hasNext())
{
file = (File)iterator.next();
if(file.getName().contains(".rar"))
continue;
files.add(file);
}
return files;
}
public static void recursiveCompressedFile(File file) throws IOException
{
//广度优先遍历
for(File e:file.listFiles())
{
String filePath = e.getAbsolutePath().replace("\\\\","/");
//深度优先遍历
if(e.getName().contains(".zip"))
{
String desString = filePath.substring(0,filePath.lastIndexOf("."))+"/";
unZipFile(e,desString);
e.delete();
recursiveCompressedFile(new File(desString));
}
if(e.getName().contains(".rar"))
{
String desString = filePath.substring(0,filePath.lastIndexOf("."))+"/";
unRarFile(e,desString);
e.delete();
recursiveCompressedFile(new File(desString));
}
if(e.isDirectory())
recursiveCompressedFile(e);
}
}
总结:该问题的解决过程中学习了:(1)广度优先和深度优先的策略;(2)递归调用的方法;(3)如何解压文件
转载请说明出处。
Java获取压缩包内文件数_java获取递归获取嵌套压缩包(zip和rar)中的所有文件相关推荐
- java zip 创建目录_Java实现Zip压缩目录中的所有文件
java中将一个文件夹下所有的文件压缩成一个文件,然import java.io.*; import java.util.zip.*; public class CompressD { // 缓冲 s ...
- poi 获取excel列宽度_JAVA使用POI获取Excel的列数与行数
JAVA使用POI获取Excel的列数与行数 发布于 2020-8-19| 复制链接 Apache POI 是用Java编写的免费开源的跨平台的 Java API,Apache POI提供API给Ja ...
- Java批量高效压缩支持加解密支持所有压缩格式(Zip/7z/rar)
前言:有时候需要对很多文件进行压缩,几个还好如果有100个呢对吧,为什么不借助咱们强大的java呢,所以我就写了一个可以批量压缩,支持所有压缩格式的工具类当然也支持加密和解密,下面就是工具类的代码 废 ...
- Java获取压缩包内文件数_使用java.util.zip.ZipFile,压缩包内文件数量过多则报错问题....
引入的jar包不对,或者你的压缩文件不标准.62616964757a686964616fe78988e69d8331333365646331一般就会报这个错误.关于上面英语的翻译:Key featur ...
- java获取当前年月日历_java万年历,获取该年月日历表
这篇文章主要介绍了java获取对应年月分日历表有需要的朋友可以来参考下 这篇文章应用java技术输入年份和月份获取该年月日历表,下面通过一段代码给大家做展示: 输入年份和月份,打印出这个月的日历表 1 ...
- java获取http状态码_java – 使用OkHttp获取Http状态码
我正在使用OkHttp来获取一些网站的内容. 但是,我无法从响应中获取Http-Status代码. 我的Java代码: OkHttpClient client = new OkHttpClient() ...
- java point类求两点间距离_JAVA 根据经纬度获取两点之间的距离(转载)
原文https://blog.csdn.net/jk940438163/article/details/83147557 思路: 1. 地球本身是个不规则的球体,这里将其看着一个规制球体 2. 半径取 ...
- java 输出当前行号_Java编程实现获取当前代码行行号的方法示例
本文实例讲述了Java编程实现获取当前代码行行号的方法.分享给大家供大家参考,具体如下: 最近的项目中,为了实现自定义的log类,能够输出具体的代码行行号,我通过使用StackTraceElement ...
- java 获取mac地址 乱码_Java:开机获取Mac地址问题
server.jar设置为开机自启动,启动时会执行getLinuxMac()方法获取本机Mac地址: private static String getLinuxMac() { StringBuffe ...
- java获取泛型的值_java 反射之获取泛型对象的所有字段与对应的值(包括父类的)...
public static void main(String[] args) throwsIntrospectionException { SysUser obj= newSysUser(); obj ...
最新文章
- Python应用实战-用Highcharts实现可视化分析
- 前端学习(3253):vs code中组件化编码
- (亲测)Hbase安装(傻瓜式安装)
- 第四节:EasyUI的一些操作
- 开课吧:微服务与DDD解析
- 《图像分析基础》的专有名词解析
- 【学术分享】发顶会论文,怎么就那么难?
- 2014年最新前端开发面试题(题目列表+答案 完整版)
- Android文件资源(raw/data/asset)的存取
- 鼠标点计算机再点网络也是选定,鼠标左键单击变双击,点一下变两下是什么原因?...
- kinect v1原理_微软官方博客揭秘Kinect工作原理
- 用集成移位寄存器74194设计一个模4的环形计数器电路
- 搭建服务器提供IOS IPA包下载
- [Android]通讯录字段
- mysql engine ndb_ndbcluster引擎表同步到innodb引擎报错Error 'Unknown storage engine 'ndbcluster'...
- 深入探讨大数据权限管理方案-从哲学到技术
- (修订)MySQL优化/面试,看这一篇就够了
- 如何用python实现题目:一球从100米高度自由落下,每次落地后反跳回原高度的一半;再落下,求它在第10次落地时,共经过多少米?第10次反弹多高?
- SpringCloud-8-事务控制
- matlab符号矩阵入门