gpt4 book ai didi

java - 根据清除时间保留最新的n个文件

转载 作者:行者123 更新时间:2023-11-30 03:27:27 25 4
gpt4 key购买 nike

我尝试过如何根据 n 天保留文件。这是这样做的逻辑。

public static void purgeFiles(int daysToRetain, String directory){

File backupDir = new File(directory);
long purgeTime = System.currentTimeMillis() - (daysToRetain * 24L * 60L * 60L * 1000L);
if(backupDir.exists()){
File[] listOfBackupFiles = backupDir.listFiles();
for(File backupFile : listOfBackupFiles){
if(backupFile.lastModified() < purgeTime){
if(backupFile.isFile()){
System.out.println(backupFile.getName()+" is going to delete");
backupFile.delete();
}
}

}

}

}

这里我有个疑问,如何保留目录中最新的10个文件。文件创建日期和时间不同。

创建文件没有固定时间。文件不会每天、每周或每月创建。一个文件将在 2 天内创建,其他文件将在 5 天内创建。

所以,我想保留最新的 10 个文件。

最佳答案

Best way to list files in Java, sorted by Date Modified?

您可以使用比较器按修改日期对数组进行排序。然后,只需检查数组是否大于 10,并对 10 之后的所有项目执行代码。

示例:

import java.io.File;
import java.util.Arrays;
import java.util.Comparator;

public class PurgeFiles
{

public static void main(String[] args)
{
purgeFiles(10, 10, "C:/testdir/");
}

public static void purgeFiles(int daysToRetain, int filesToRetain, String directory)
{

File backupDir = new File(directory);
long purgeTime = System.currentTimeMillis() - (daysToRetain * 24L * 60L * 60L * 1000L);
if (backupDir.exists())
{
File[] listOfBackupFiles = backupDir.listFiles();

Arrays.sort(listOfBackupFiles, new Comparator<File>()
{
public int compare(File f1, File f2)
{
return Long.valueOf(f2.lastModified()).compareTo(f1.lastModified());
}
});

if(listOfBackupFiles.length > filesToRetain){
File[] listOfBackupFilesToCheckForDeletion = new File[listOfBackupFiles.length - filesToRetain];
System.arraycopy(listOfBackupFiles, filesToRetain, listOfBackupFilesToCheckForDeletion, 0, listOfBackupFiles.length - filesToRetain);

for (File backupFile : listOfBackupFilesToCheckForDeletion)
{
if (backupFile.lastModified() < purgeTime)
{
if (backupFile.isFile())
{
System.out.println(backupFile.getName() + ", " + backupFile.lastModified() + " is going to delete");
backupFile.delete();
}
}
}
}
}
}
}

关于java - 根据清除时间保留最新的n个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29849592/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com