java根据所给的根目录获取底下所有文件夹结构
所写工具类背景:项目经理叫我写个工具类实现:给个项目的根目录分析java文件及jsp文件。记录文件类型、路径、文件名和包名。
定义的实体类(这里我用了easypoi以后方便写入excel文档)
- @Data
- public class ReadExcelDataEntity implements Serializable {
- @Excel(name = "文件", orderNum = "1")
- private String fileType;
- @Excel(name = "名称", orderNum = "2")
- private String fileName;
- @Excel(name = "路径", orderNum = "3")
- private String filePath;
- @Excel(name = "包名", orderNum = "4")
- private String packageName;
- }
工具类:
- public class FindAllFile {
- private static List<String> allList = new ArrayList<>();
- /**
- * 根据根目录获取所有路径信息
- *
- * @param f File
- * @return allList
- */
- public static List<String> getFile(File f) {
- File[] fList = f.listFiles();
- for (int i = 0; i < fList.length; i++) {
- if (fList[i].isDirectory() == true) {
- getFile(fList[i]);
- } else {
- allList.add(fList[i].getAbsolutePath());
- }
- }
- return allList;
- }
- /**
- * 根据类型获取class一览
- *
- * @param f File
- * @param fileType 文件类型
- * @return
- */
- public static List<ReadExcelDataEntity> findAllFileByFileType(File f, String fileType) {
- //清空静态allList多次调用影响数据
- allList.clear();
- List<ReadExcelDataEntity> list = new ArrayList<>();
- String rootPath = f.getPath();
- String root = rootPath.replace("\\", "\\\\");
- getFile(f);
- allList.stream()
- .forEach(x -> {
- if (x.endsWith(fileType)) {
- ReadExcelDataEntity entity = new ReadExcelDataEntity();
- //获取文件类型
- String[] split = x.split("\\.");
- String type = split[split.length - 1];
- File file = new File(x);
- //获取文件名称
- String name = file.getName();
- //获取文件路径
- String filePath = x.replaceAll(root, " ");
- entity.setFileType(type);
- entity.setFilePath(filePath.trim());
- entity.setFileName(name);
- FileReader fr = null;
- BufferedReader br = null;
- if ("java".equals(fileType)) {
- //获取文件类型为java的包名
- try {
- fr = new FileReader(file);
- br = new BufferedReader(fr);
- String line = "";
- while ((line = br.readLine()) != null) {
- if (line.indexOf("package") != -1) {
- line = line.replaceAll("package", " ");
- entity.setPackageName(line.trim());
- list.add(entity);
- return;
- }
- }
- } catch (Exception e) {
- e.printStackTrace();
- } finally {
- try {
- fr.close();
- br.close();
- } catch (Exception e) {
- e.printStackTrace();
- }
- }
- }
- list.add(entity);
- }
- });
- return list;
- }
- /**
- * 去除前后字符
- *
- * @param args 传入的字符串
- * @param beTrim 去除格式
- * @return
- */
- public static String trim(String args, char beTrim) {
- int st = 0;
- int len = args.length();
- char[] val = args.toCharArray();
- char sbeTrim = beTrim;
- while ((st < len) && (val[st] <= sbeTrim)) {
- st++;
- }
- while ((st < len) && (val[len - 1] <= sbeTrim)) {
- len--;
- }
- return ((st > 0) || (len < args.length())) ? args.substring(st, len) : args;
- }
- }
核心代码:
- public static List<String> getFile(File f) {
- File[] fList = f.listFiles();
- for (int i = 0; i < fList.length; i++) {
- if (fList[i].isDirectory() == true) {
- getFile(fList[i]);
- } else {
- allList.add(fList[i].getAbsolutePath());
- }
- }
- return allList;
- }
测试类:
- public class Test3 {
- public static void main(String[] args) {
- File file = new File("E:\\日本\\branches\\20190104\\skyreservesatellite");
- List<ReadExcelDataEntity> java = FindAllFile.findAllFileByFileType(file, "jsp");
- System.out.println(java);
- System.out.println(java.size());
- }
- }
测试结果:
jsp文件:
- [ReadExcelDataEntity(fileType=jsp, fileName=addflightinfo.jsp, filePath=\skyreservesatellite\satellite\addflightinfo.jsp, packageName=null)]
java文件:
- [ReadExcelDataEntity(fileType=java, fileName=UtilCheckerSso.java, filePath=\skyreservesatellite\satellite\src\sky\agency\checker\UtilCheckerSso.java, packageName=sky.agency.checker;)]
java根据所给的根目录获取底下所有文件夹结构的更多相关文章
- java 弹出选择目录框(选择文件夹),获取选择的文件夹路径
java 弹出选择目录框(选择文件夹),获取选择的文件夹路径 java 弹出选择目录框(选择文件夹),获取选择的文件夹路径:int result = 0;File file = null;String ...
- Java根路径设置(在获取本地路径时会获取到这个文件夹,,这样就可以专门放配置文件了)
在获取本地路径时会获取到这个文件夹,,这样就可以专门放配置文件了
- 获取WINDOWS特殊文件夹
const// registry entries for special paths are kept in : REGSTR_PATH_SPECIAL_FOLDERS = REGSTR_PAT ...
- Java之旅hibernate(2)——文件夹结构
Hibernate的jar最好是到官网上进行下载.下载最新的稳定的版本号.之后进行解压,以下我们介绍一下hibernate的包结构. 1. 包结构 我们能够看到包文件夹结构发生了变化.我以5 ...
- java:多层文件夹情况下,判断文件夹下是否有文件夹,并获取到没有文件夹的名字的方法
业务问题案例 在公司遇到的一个问题,本以为很小很好解决,没想到花了一下午时间.图给的是文件路径,page1下有10个文件夹,每个有的有文件夹或者文件,要求得到page1下(即:123456789,10 ...
- Android(java)学习笔记135:Android中assets文件夹资源的访问
Android资源文件分类: Android资源文件大致可以分为两种: 第一种是res目录下存放的可编译的资源文件: 这种资源文件系统会在R.java里面自动生成该资源文件的ID,所以访问这种资源文件 ...
- Qt获取选择的文件夹和文件路径
获取文件夹路径 static QString getExistingDirectory(QWidget *parent = Q_NULLPTR, const QString &caption ...
- Android(java)学习笔记77:Android中assets文件夹资源的访问
Android资源文件分类: Android资源文件大致可以分为两种: 第一种是res目录下存放的可编译的资源文件: 这种资源文件系统会在R.java里面自动生成该资源文件的ID,所以访问这种资源文件 ...
- TDirectory.GetCreationTime、TDirectory.SetCreationTime获取和设置文件夹创建时间
使用函数: System.IOUtils.TDirectory.GetCreationTime//获取创建时间 System.IOUtils.TDirectory.SetCreationTime//设 ...
随机推荐
- 带你走进ajax(2)
ajax原理介绍 传统的web应用 传统的web应用是客户端向服务器发送一个http请求后,客户端要一直等待服务器的响应,这时用户什么事也干不成. 最麻烦的是对于表单的提交.比如用户要填写用户信息,等 ...
- head中的title显示在body中
今天遇到一个问题,就是title中的内容会显示在body中 <head> <title>324234</title> </head> 网上搜了一下是说编 ...
- python3_ftp多线程上传图片
项目中研发人员自己写了ftp服务,没有标准ftp中的列表,准备用jmeter对ftp压力测试时发现jmeter要验证列表(如果有同学用jmeter测试过类似的分享一下方法谢谢了),没办法只能用pyth ...
- [.net基础]访问修饰符
标题:[.net基础]访问修饰符 一.前言 基础掌握不牢固啊,所以记录下来. 二.方法访问修饰符Internal (1).创建工程ParentAndSon (2).添加类ModelA namespac ...
- pxe无人值守自动安装
rpm -ivh http://mirrors.ustc.edu.cn/fedora/epel/6/x86_64/epel-release-6-8.noarch.rpmyum listyum upda ...
- 20145302张薇《Java程序设计》第四周学习总结
20145302 <Java程序设计>第四周学习总结 教材学习内容总结 第六章 继承共同行为 面向对象中,子类继承父类,避免重复的行为定义,不过并非为了避免重复定义行为就使用继承. 程序代 ...
- [转载]Javassist 使用指南(一)
======================= 本文转载自简书,感谢原作者!. 原链接如下:https://www.jianshu.com/p/43424242846b =============== ...
- 4.9版本的linux内核中实时时钟芯片pt7c4338的驱动源码在哪里
答:drivers/rtc/rtc-ds1307.c,内核配置项为CONFIG_RTC_DRV_DS1307 Location: -> Device Drivers -> Real Tim ...
- 如何设置hyper-v下的ubuntu虚拟机分辨率
1.登陆ubuntu虚拟机 2.vi /etc/default/grub,改变如下内容: 改变前: GRUB_CMDLINE_LINUX_DEFAULT="quiet splash" ...
- 解决IE6已终止操作问题
令人崩溃的IE6问题再次出现,打开某个页面时,弹出提示框“Internet Explorer无法打开Internet 站点...已终止操作”. 查了一下资料,感觉“因为js(一个比较复杂的js) ...