2013-10-25 98 views
0

我有一个保存在手机上的备份目录,但是我无法制定出去除最后三个备份的逻辑。删除目录中除最后3个修改后的文件以外的所有文件

目前的情况是,我有:

public static void checkLocalBackup(){ 

      String path = Global.backupSingleLocalLocation; 
      Log.d("Files", "Path: " + path); 
      File f = new File(path);   
      File file[] = f.listFiles(); 
      for (int i=0; i < file.length; i++) 
      { 
       Log.d("Files", "FileName:" + file[i].lastModified()); 
       //sudo code 
       if(isNotInLastThreeFiles){ 
        deleteFile(file[i]); 
       } 
      } 
     } 

这个循环遍历并列出所有的最后修改的文件,但我不能工作,如何选择最旧的文件,并留下最新的3?

任何指导将非常感激。

回答

4

将所有File对象存储在List<File>中,并使用自定义Comparator对它们进行排序,以便它们按“lastModified”排序。

最后,从列表中选择最后三项(或前三项,取决于您的排序顺序)。

0

这篇文章演示如何按修改日期列出文件;一旦你做到这一点,你可以很容易地找到最后三:

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

+0

虽然这可能在理论上回答这个问题,但[这将是更可取的](http://meta.stackexchange.com/q/8259)在这里包含答案的基本部分,并提供供参考的链接。 –

1

您可以按照您的文件被修改日期的数组:

File[] files = folder.listFiles(); 

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

使用比较就可以轻松实现您的要求为获得最后三个修改的文件在你想要的目录中。

相关问题