第2世界
发布于 2024-03-05 / 19 阅读 / 0 评论 / 0 点赞

gradle缓存中按照修改日期找出新的缓存文件

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.");
        }
    }
}


评论