2013-10-25 40 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

使用比較就可以輕鬆實現您的要求爲獲得最後三個修改的文件在你想要的目錄中。

相關問題