2011-06-12 30 views
15

İçeriği bir dizinde bulunan dosyalardan okuyan bir yöntem var. Ancak işlevsel sebeplerden dolayı en eski dosya ile (son modifiye edilmiş mülk ile gösterilir) başlamak ve en yeni dosya ile bitmek gerekir.Java ile tarihe göre bir dizindeki dosyaları nasıl sıralayabilirim?

Bu benim dosyaları açmak ve okumak nasıl kodudur:

 FilenameFilter filter = new FilenameFilter() { 
     public boolean accept(File dir, String name) { 
      return name.matches("access_log.*"); 
     } 
    }; 

    File folder = new File("/home/myfiles"); 
    File[] listOfFiles = folder.listFiles(filter); 

    for (int i = 0; i < listOfFiles.length; i++) { 
     String sFileName = listOfFiles[i].getName(); 
     File accessLogFile = new File(aLog.getPath(), sFileName); 
     long time=accessLogFile.lastModified(); 
     // do something with the file 
    } 

herkes çabuk tarihe göre dosyaların benim listesini sıralamak nasıl bir çözüm mı?

+0

http://stackoverflow.com/questions/203030/best-way-to-list-files-in-java-sorted-by-date-modified, sorunuzun cevabını içerir mi? – sverre

+0

FileUtils.dirListByAscendingDate'i denediniz mi? http://www.rgagnon.com/javadetails/java-0606.html – excanoe

+1

Günlük dosyalarıyla ilgileniyor gibi görünüyorsunuz. Bunlar genellikle dosya adına göre sözcüksel sıralamaya göre zamana göre sıralanacak şekilde adlandırılır. –

cevap

35

Düzenleme: java8 olarak :

Arrays.sort(files, (a, b) -> Long.compare(a.lastModified(), b.lastModified()));link

Ben, sana gereken çok yakın bazı ilginç kodu bulunan çalışma uygulanmasına ilişkin Sadece hızlı bir göz (var Karşılaştırma birimi):

File f = new File("/home/myfiles"); 

File [] files = f.listFiles(); 

Arrays.sort(files, new Comparator() 
{ 
    public int compare(Object o1, Object o2) { 

     if (((File)o1).lastModified() > ((File)o2).lastModified()) { 
      return -1; 
     } else if (((File)o1).lastModified() < ((File)o2).lastModified()) { 
      return +1; 
     } else { 
      return 0; 
     } 
    } 

}); 

Ayrıca bu gönderiye bir göz atabilirsiniz, sorunun nasıl çözüldüğünü görün: Best way to list files in Java, sorted by Date Modified?

+0

Teşekkürler - bu mükemmel çalışıyor! – Ralph

+1

Hoş Geldiniz – sfrj

+1

Merhaba, bunu karşılaştırma yönteminde döküm işlemini kaldırabileceğiniz anlamına gelebilir. Arrays.sort (dosyalar, yeni Karşılaştırıcı () {...}) –

0

Dosya Toplama geri almak için FileUtils'i commons-io içinde kullanırdım. Daha sonra özel bir karşılaştırıcı uygulardım. Oldukça kolay olmalı.

İlgili konular