import java.io.*;
import java.nio.file.*;
import java.time.LocalDate;
import java.time.format.DateTimeFormatter;
public class GradleCacheProcessor {
public static void main(String[] args) {
// 默认的Gradle缓存路径
String defaultCachePath = System.getProperty("user.home") + File.separator + ".gradle" + File.separator + "caches";
File cacheDirectory = new File(defaultCachePath);
// 指定日期
LocalDate thresholdDate = LocalDate.of(2024, 3, 1); // 示例:2024年3月1日
// 新的目标目录
String destinationDirPath = "D:\\NewCacheDir";
if (cacheDirectory.exists() && cacheDirectory.isDirectory()) {
try (Stream<Path> filesStream = Files.walk(cacheDirectory.toPath())) {
filesStream.filter(Files::isRegularFile)
.forEach(file -> {
// 获取文件的最后修改日期
BasicFileAttributes attrs = Files.readAttributes(file, BasicFileAttributes.class);
LocalDate fileModifiedDate = attrs.lastModifiedTime().toInstant().atZone(ZoneId.systemDefault()).toLocalDate();
// 判断文件是否在指定日期之后被修改过
if (fileModifiedDate.isAfter(thresholdDate)) {
Path destinationFilePath = Paths.get(destinationDirPath, file.toString().substring(cacheDirectory.getAbsolutePath().length()));
// 创建缺失的中间目录
Files.createDirectories(destinationFilePath.getParent());
// 复制文件到新目录
Files.copy(file, destinationFilePath, StandardCopyOption.REPLACE_EXISTING);
}
});
} catch (IOException e) {
e.printStackTrace();
}
} else {
System.out.println("Gradle cache directory not found.");
}
}
}