增加多网IP探测上报;
优化公网运营商信息; 逻辑标识改为读取外部文件; 增加定时任务清理日志临时文件;
This commit is contained in:
@@ -0,0 +1,74 @@
|
||||
package com.tongran.agent.client.utils;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.nio.file.DirectoryStream;
|
||||
import java.nio.file.Files;
|
||||
import java.nio.file.Path;
|
||||
import java.nio.file.Paths;
|
||||
import java.nio.file.attribute.BasicFileAttributes;
|
||||
import java.time.Instant;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
public class FileCleaner {
|
||||
|
||||
/**
|
||||
* 删除指定目录中 30 天前修改的文件
|
||||
*
|
||||
* @param directoryPath 目录路径,例如:"/tmp/logs"
|
||||
* @param days 保留天数,传入 30 表示删除 30 天以上的文件
|
||||
*/
|
||||
public static void cleanOldFiles(String directoryPath, int days) {
|
||||
Path dir = Paths.get(directoryPath);
|
||||
|
||||
// 检查目录是否存在且是目录
|
||||
if (!Files.exists(dir)) {
|
||||
System.err.println("目录不存在: " + directoryPath);
|
||||
return;
|
||||
}
|
||||
if (!Files.isDirectory(dir)) {
|
||||
System.err.println("路径不是目录: " + directoryPath);
|
||||
return;
|
||||
}
|
||||
|
||||
// 计算 30 天前的时间点(Instant)
|
||||
Instant cutoffTime = Instant.now().minus(days, ChronoUnit.DAYS);
|
||||
List<Path> deletedFiles = new ArrayList<>();
|
||||
List<Path> failedFiles = new ArrayList<>();
|
||||
|
||||
try (DirectoryStream<Path> stream = Files.newDirectoryStream(dir)) {
|
||||
for (Path file : stream) {
|
||||
// 只处理普通文件(跳过子目录等)
|
||||
if (Files.isRegularFile(file)) {
|
||||
try {
|
||||
BasicFileAttributes attrs = Files.readAttributes(file, BasicFileAttributes.class);
|
||||
Instant lastModifiedTime = attrs.lastModifiedTime().toInstant();
|
||||
|
||||
if (lastModifiedTime.isBefore(cutoffTime)) {
|
||||
Files.delete(file); // 删除文件
|
||||
deletedFiles.add(file);
|
||||
System.out.println("已删除: " + file + " (修改时间: " + lastModifiedTime + ")");
|
||||
}
|
||||
} catch (IOException e) {
|
||||
System.err.println("无法读取或删除文件: " + file + " -> " + e.getMessage());
|
||||
failedFiles.add(file);
|
||||
}
|
||||
}
|
||||
}
|
||||
} catch (IOException e) {
|
||||
System.err.println("遍历目录失败: " + e.getMessage());
|
||||
}
|
||||
|
||||
// 统计结果
|
||||
System.out.println("✅ 清理完成:");
|
||||
System.out.println(" 删除文件数: " + deletedFiles.size());
|
||||
System.out.println(" 删除失败数: " + failedFiles.size());
|
||||
}
|
||||
|
||||
// 使用示例
|
||||
public static void main(String[] args) {
|
||||
// String logDir = "/tmp/logs"; // 替换为你的实际目录
|
||||
// cleanOldFiles(logDir, 30); // 删除 30 天以上的文件
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user