背景:定时任务跑一个文件夹下多个文件,获取文件后做一些处理,这里出现扫描的时候会有概率扫描不到的情况,环境:linux,语言 jdk17
下面是涉及到的java代码:
// 获取符合要求的文件夹
File[] subDirectories = directory.listFiles(file -> file.isDirectory() && EasyExcelUtil.isQuarterFolder(file.getName()));
if (subDirectories != null) {
for (File subDirectory : subDirectories) {
// 获取文件夹中的 Excel 文件
// 获取年份和季度
String directoryName = subDirectory.getName();
log.info("Currently scanned to directory:{}",directoryName);
String year = directoryName.substring(0, 4);
String quarter = directoryName.substring(4);
}
}
public static boolean isQuarterFolder(String folderName) {
// 判断文件夹名是否符合季度命名规则,例如:2023Q1、2023Q2、2023Q3、2023Q4
return folderName.matches("\\d{4}Q[1-4]");
}
结果:
解决方式:
通过for循环+ifelse 也就是不使用lambda 表达式,即最简单直接的代码方式规避的这个bug,这个bug没有找到原因,如果有人知道可以评论一下,谢谢!