我已尝试过如何根据n天保留文件。这是这样做的逻辑。
Required
这里我怀疑如何在目录中保留最新的10个文件。文件创建日期和时间不同。
没有固定的时间来创建文件。文件不会每天或每周或每月创建。一个文件将在2天内创建,其他文件将在5天内创建。
所以,我想保留最新的10个文件。
答案 0 :(得分:2)
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();
}
}
}
}
}
}
}