From 621ad8078b9d060cd38e2dc1b41e2f72e1686130 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?LAPTOP-S9HJSOEB=5C=E6=98=8A=E5=A4=A9?= Date: Mon, 14 Apr 2025 10:56:04 +0800 Subject: [PATCH] =?UTF-8?q?=E5=88=A0=E9=99=A4=E6=96=87=E4=BB=B6=E4=BF=AE?= =?UTF-8?q?=E6=94=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../web/controller/PLCController.java | 10 +++++ .../com/zhehekeji/web/service/CronTab.java | 45 ++++++++++++++++++- 2 files changed, 53 insertions(+), 2 deletions(-) diff --git a/web/src/main/java/com/zhehekeji/web/controller/PLCController.java b/web/src/main/java/com/zhehekeji/web/controller/PLCController.java index ac53d0a..32f1407 100644 --- a/web/src/main/java/com/zhehekeji/web/controller/PLCController.java +++ b/web/src/main/java/com/zhehekeji/web/controller/PLCController.java @@ -31,6 +31,16 @@ public class PLCController { private ConfigProperties configProperties; @Resource private KsecNettyClient ksecNettyClient; + @Resource + CronTab cronTab; + + + @GetMapping("/delFile") + @ApiOperation(value = "删除文件") + public Result delFile(){ + cronTab.file(); + return Result.success(); + } @GetMapping("/tcp") diff --git a/web/src/main/java/com/zhehekeji/web/service/CronTab.java b/web/src/main/java/com/zhehekeji/web/service/CronTab.java index 578ec8c..65fa47a 100644 --- a/web/src/main/java/com/zhehekeji/web/service/CronTab.java +++ b/web/src/main/java/com/zhehekeji/web/service/CronTab.java @@ -29,6 +29,7 @@ import java.nio.file.Files; import java.nio.file.Path; import java.nio.file.attribute.BasicFileAttributes; import java.time.*; +import java.time.format.DateTimeFormatter; import java.time.temporal.ChronoUnit; import java.util.HashMap; import java.util.Iterator; @@ -72,12 +73,12 @@ public class CronTab { File dir = new File(configProperties.getSavePath().getMediaPath()); long space = dir.getFreeSpace() / gByte; log.info(" free space :{}",space); - if(space > 150){ + if(space > 350){ return; } deleteOldFiles(dir,configProperties.getDeleteFileDays()); File dir2 = new File(configProperties.getSavePath().getMp4Path()); - deleteOldFiles(dir2,configProperties.getDeleteFileDays()); + deleteOldFoldersByName(dir2,configProperties.getDeleteFileDays()); } public static void putTime(Integer streetId){ @@ -170,6 +171,46 @@ public class CronTab { } } + public static void deleteOldFoldersByName(File parentDir, int days) { + if (!parentDir.exists() || !parentDir.isDirectory()) { + System.out.println("指定的路径不是一个有效的目录: " + parentDir.getName()); + return; + } + + File[] folders = parentDir.listFiles(File::isDirectory); + if (folders != null) { + for (File folder : folders) { + String folderName = folder.getName(); + DateTimeFormatter formatter = DateTimeFormatter.ofPattern("yyyy/M/d"); + try { + LocalDate folderDate = LocalDate.parse(folderName, formatter); + LocalDate now = LocalDate.now(); + long daysBetween = ChronoUnit.DAYS.between(folderDate, now); + if (daysBetween > days) { + deleteFolder(folder); + log.info("删除文件夹: {}", folder.getPath()); + } + } catch (Exception e) { + log.warn("无法解析文件夹名称: {}", folderName); + } + } + } + } + + private static void deleteFolder(File folder) { + File[] files = folder.listFiles(); + if (files != null) { + for (File file : files) { + if (file.isDirectory()) { + deleteFolder(file); + } else { + file.delete(); + } + } + } + folder.delete(); + } + public static void deleteOldFiles( File folder,int days) { if (!folder.exists() || !folder.isDirectory()) { System.out.println("指定的路径不是一个有效的文件夹: " + folder.getName());