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

Использование Comparator вы можете легко достигнуть ваше требование для получения последние три измененных файла в нужной директории.

Смежные вопросы