递归获取zip中的文件
1 //tempPath 系统临时文件夹
2 2 private List<String> getWsContentList(String tempPath) {
3 3 //wsFilePath 存放zip文件夹路径
4 4 File file = new File(wsFilePath);
5 5 File unzipFile = null;
6 6
7 7 //获取所有zip文件
8 8 File[] files = file.listFiles();
9 9 try {
10 10 if (files != null && files.length > 0) {
11 11 String unzipPath;
12 12 for (File tempFile : files) {
13 13 //创建存放解压文件的临时文件夹
14 14 unzipPath = StrUtil.format("{}/unzip/{}", tempPath, String.valueOf(System.currentTimeMillis()));
15 15 unzipFile = new File(unzipPath);
16 16 if (!unzipFile.exists()) {
17 17 unzipFile.mkdir();
18 18 }
19 19 ZipUtil.unzip(tempFile, unzipFile);
20 20 }
21 21 }
22 22 } catch (Exception e) {
23 23 log.error(e.getMessage());
24 24 }
25 25
26 26 //到临时文件夹读取所有解压出来的文件
27 27 File wsFile = new File(StrUtil.format("{}/unzip", tempPath));
28 28 File[] wsFileList = wsFile.listFiles();
29 29 if (wsFileList != null && wsFileList.length > 0) {
30 30 List<String> wsFilePathList = new ArrayList<>();
31 31 //递归获取所有文件路径(非文件夹)
32 32 recursionReadFile(wsFileList, wsFilePathList);
33 33
//获取所有文本文件的内容
34 34 List<String> wsContentList = readTextFile(wsFilePathList);
35 35 return wsContentList;
36 36 }
37 37 return null;
38 38 }
1 public static List<String> recursionReadFile(File[] fileList, List<String> wsFilePathList) {
2 for (File file : fileList) {
3 if (file.isDirectory()) {
4 fileList = file.listFiles();
5 recursionReadFile(fileList, wsFilePathList);
6 } else {
7 wsFilePathList.add(file.getPath());
8 }
9 }
10 return wsFilePathList;
11 }
1 private static List<String> readTextFile(List<String> wsFilePathList) {
2 if (CollUtil.isNotEmpty(wsFilePathList)) {
3 FileReader reader;
4 List<String> wsContent = new ArrayList<>(wsFilePathList.size());
5 for (int i = 0; i < wsFilePathList.size(); i++) {
6 reader = new FileReader(wsFilePathList.get(i));
7 wsContent.add(reader.readString());
8 }
9 return wsContent;
10 }
11 return null;
12 }
获取系统临时路径:String tempPath = System.getProperty("java.io.tmpdir");
最后执行完可以删除临时文件中解压出来的文件:FileUtil.clean(new File(StrUtil.format("{}/unzip", tempPath)));
当中用到了三方hutool工具包。
个人记录,下次再用到可以直接来搬。
递归获取zip中的文件的更多相关文章
- 背水一战 Windows 10 (90) - 文件系统: 获取 Package 中的文件, 可移动存储中的文件操作, “库”管理
[源码下载] 背水一战 Windows 10 (90) - 文件系统: 获取 Package 中的文件, 可移动存储中的文件操作, “库”管理 作者:webabcd 介绍背水一战 Windows 10 ...
- Java非递归的方式获取目录中所有文件(包括目录)
零.思路解析 对于给出的文件查看其下面的所有目录,将这个目录下的所有目录放入待遍历的目录集合中,每次取出该集合中的目录遍历,如果是目录再次放入该目录中进行遍历. 一.代码 /** * 非递归的方式获取 ...
- python递归获取目录下指定文件
获取一个目录下所有指定格式的文件是实际生产中常见需求. import os #递归获取一个目录下所有的指定格式的文件 def get_jsonfile(path,file_list): dir_lis ...
- [Go] 递归获取目录下的文件
操作示例: ./scan /Document/dir 代码: // 定义递归文件树结构体 type treeList struct { Path string `json:"path&quo ...
- android 获取Asset中Properties文件配置的键值对
1 获取 AssetManager AssetManager assetManager = context.getApplicationContext().getAssets(); 2 获取流 Str ...
- 获取URL中的文件的扩展名
问题: 尽可能多地写出获取文件扩展名的方法: //方法一(分割数组) function getExt($url){ $arr = explode('.',$url); $len = count($ar ...
- 获取项目中.txt 文件的内容
package com.fh.controller.ruitai.util; import java.io.BufferedInputStream; import java.io.File; impo ...
- File类 递归 获取目录下所有文件文件夹
package com.xiwi; import java.io.*; import java.util.*; class file{ public static void main(String a ...
- php递归获取目录下所有文件
<?php function getFileList($dir){ $dir=iconv("utf-8","gb2312",$dir); if ($hea ...
- 用JS获取Html中所有图片文件流然后替换原有链接
function displayHtmlWithImageStream(bodyHtml) { var imgReg = /<img.*?(?:>|\/>)/gi; var arr ...
随机推荐
- oeasy教您玩转linux 010211 牛说 cowsay
我们来回顾一下 上一部分我们都讲了什么? 软件包工具是 apt 软件包不但能下载,也能升级,还能删除 专门管理软件包的 aptitude 这次我们下载个牛说 cowsay: sudo apt inst ...
- 构建基于Java Spring Boot和Uniapp的心理小程序:从零到一的完整指南
构建基于Java Spring Boot和Uniapp的心理小程序:从零到一的完整指南 前言 大家好,今天我们来聊聊如何使用Java Spring Boot和Uniapp构建一个心理小程序.这个项目不 ...
- 《最新出炉》系列入门篇-Python+Playwright自动化测试-54- 上传文件(input控件) - 上篇
1.简介 在实际工作中,我们进行web自动化的时候,文件上传是很常见的操作,例如上传用户头像,上传身份证信息等.所以宏哥打算按上传文件的分类对其进行一下讲解和分享. 2.上传文件的API(input控 ...
- mybatis关于大于小于:元素内容必须由格式正确的字符数据或标记组成。
首先是原因: mybatis中< >这两个符号会被识别为标签的开始和结束,用了就会报解析的错误 会报错类似下面这些 1.元素内容必须由格式正确的字符数据或标记组成. 2.Error cre ...
- 记一些java里的数据结构
0.Vector:过期的,被arraylist取代了 0.1Stack:也不建议使用 1.双向链表LinkedList:由list实现的接口类 2.队列Queue:操作为add remove elem ...
- 汇编+qemu玩转控制台打印
有段时间开始对汇编感兴趣,也因此在写各种不同的demo,现在分享之前学习的成果,需要下载的东西有nasm和qemu-system-i386,看看枯燥的汇编能产生多大的能量. 先来复习一下通用寄存器: ...
- 【JavaScript】无框架翻页处理
这个业务太复杂了 输入框的东西要用接口查出来,居然不是用户手动输入 然后我就要做一个翻页的查询列表: <div form id="troublePartSearch" sty ...
- Python 潮流周刊#64:Python 的函数调用还很慢么?(摘要)
本周刊由 Python猫 出品,精心筛选国内外的 250+ 信息源,为你挑选最值得分享的文章.教程.开源项目.软件工具.播客和视频.热门话题等内容.愿景:帮助所有读者精进 Python 技术,并增长职 ...
- Java异常 小白版
什么是异常 在程序运行时打断正常程序流程的任何不正常的情况称为错误或异常.异常包括用户造成的异常和 系统造成的异常. 例如:网络连接中断.操作符越界.加载的类找不到 异常产生的原因和分类 1. 异常产 ...
- 瑞芯微 | 如何固定以太口地址为指定ip?ifplugd妙用
rxw的RK3568的evb1公板,有2个以太口, 默认UI界面只能配置eth0,无法配置eth1, 实际应用中,有时需要一旦有网线插入,就需要该地址设置为指定IP地址. 本文介绍2个最简单的方法实现 ...