所写工具类背景:项目经理叫我写个工具类实现:给个项目的根目录分析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;)]

转载于:https://www.cnblogs.com/jiangweichao/p/10303306.html

java根据所给的根目录获取底下所有文件夹结构相关推荐

  1. java 文件大小统计工具类_Java获取文件大小,文件夹内文件个数的工具类

    package cn.edu.hactcm.cfcms.utils; import java.io.File; import java.io.FileInputStream; import java. ...

  2. 获取应用程序文件夹路径的最佳方法

    我看到有一些方法可以获取应用程序文件夹路径: Application.StartupPath System.IO.Path.GetDirectoryName( System.Reflection.As ...

  3. microsoft visual sourcesafe explorer 获取不了文件夹的解决方法

    使用vss explorer 8.0一段时间后发现, 获取不了文件夹目录,没有弹出选择可复选树型的目录框.重装了两次 microsoft visual sourcesafe explorer 8.0都 ...

  4. Python编程语言学习:两行代码输出根目录下所有子文件夹的绝对路径、相对路径

    Python编程语言学习:两行代码输出根目录下所有子文件夹的绝对路径.相对路径 目录 两行代码输出根目录下所有子文件夹的绝对路径.相对路径 两行代码输出根目录下所有子文件夹的绝对路径.相对路径 #Py ...

  5. [10月4日的脚本] 获取Office365邮箱文件夹的权限

    脚本下载: GetO365MailboxFolderPermission.ziphttp://gallery.technet.microsoft.com/scriptcenter/Script-to- ...

  6. android 根目录uri,如何在根目录下创建一个文件夹Android

    我需要在根目录下创建CAT_IMG文件夹,并在列表视图中检索它.但CAT_IMG文件夹不在根目录中创建.我在清单文件中添加了权限.请帮我在根目录下创建一个文件夹.如何在根目录下创建一个文件夹Andro ...

  7. Mac根目录下无法创建文件夹

    问题场景:需要在根目录下创建data文件夹,出现 Read-only file system 字样 解决方案: 重新启动,在启动的时候按command+R,进入Recovery模式 关闭sip 在to ...

  8. windows获取文件列表及文件夹结构

    1. 获取文件列表 命令: dir /B >lb.txt 查看磁盘D下的文件列表: 在D盘根目录下会生成文本文件lb.txt 2. 获取文件夹结构 命令: tree /f >1.txt 查 ...

  9. php文件安全访问权限,如何解决“若要获取访问该文件夹的权限,您需要使用安全选项卡”的问题...

    解决"若要获取访问该文件夹的权限,您需要使用安全选项卡"的方法:首先打开用户账户工具:然后依次选择"用户名称>组成员>管理员":接着点击" ...

  10. 解决Python3.7根目录中没有Scripts文件夹

    一般会报错'pip' 不是内部或外部命令,也不是可运行的程序或批处理文件. 1.打开命令行输入python -m ensurepip 2.查看Python根目录下的Scripts文件夹中是否有pip相 ...

最新文章

  1. 【编程语言】JAVA | Windows10下JAVA的环境配置(绝对路径)
  2. 《系统集成项目管理工程师》必背100个知识点-26项目范围管理
  3. eventBus 与fragment
  4. Nginx、servlet、redis、sentinel、nacos、sprng-cloud、
  5. Android 系统(207)---如何自学 Android?
  6. mustache.js html模板,js模板引擎Mustache将h5模板页面转化为小程序页面
  7. 腾讯Tiny OS 组合 NB-IoT,值得程序员一试吗?
  8. python查内置函数,怎么查看python内置函数
  9. BP算法(误差逆传播算法)简单实现
  10. snapchat_如何重播Snapchat快照
  11. [渝粤教育] 中国传媒大学 计算机组成原理 参考 资料
  12. 解决IDEA报错Address localhost:1099 is already in use
  13. 到底怎么买保险?附保险配置实战
  14. 创建一个数据库,包括四个表:学生表(Student)、课程表(Course)、成绩表(Score)以及教师信息表(Teacher)
  15. 亲身经历——短信诈骗
  16. 【运维大宝剑Bigsword】之elasticsearch集群分析
  17. 如何将写好的python程序打包成exe文件
  18. zabbix安装与配置-zabbix安装与配置
  19. HDU2067——小兔的棋盘(迷宫,动态规划,卡特兰数)
  20. fmt库需要使用-fPIC参数recompile

热门文章

  1. 2012.4.13总结(一)
  2. html如何转换成电子表,如何轻松将电子表格转换为HTML [快速提示] | MOS86
  3. 如何读出烧录程序.bin的数据_如何改变程序搜索数据的方式?使用Redis进行搜索...
  4. C语言——变量篇(一)变量关键字static、auto、extern、register
  5. css3 flex布局九宫格,css3最全flex布局结构整理
  6. linux route配置网关,Linux使用route配置路由
  7. awk取列 shell 读文件_大厂运维高手如何打造核心竞争力?这些Shell命令合集得知道!...
  8. presto查询报错
  9. Hive依据key获取value
  10. 【剑指offer】之字形打印二叉树,C++实现