2011-06-12 5 views
15

मेरे पास एक तरीका है जो निर्देशिका में स्थित फ़ाइलों से सामग्री को पढ़ता है। लेकिन कार्यात्मक कारणों से सबसे पुरानी फ़ाइल (अंतिम संपत्ति द्वारा संकेतित) द्वारा शुरू करना आवश्यक है और नवीनतम फ़ाइल के साथ समाप्त होता है।जावा में किसी तारीख से निर्देशिका से फ़ाइलों को कैसे सॉर्ट करें?

इस कोड को मैं कैसे खोलने के लिए और फ़ाइलों को पढ़ने है:

 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 
    } 

किसी को भी एक समाधान कैसे मैं जल्दी से दिनांक के आधार पर फ़ाइलों की सूची को सॉर्ट कर सकते हैं है?

+0

क्या http://stackoverflow.com/questions/203030/best-way-to-list-files-in-java-sorted-by-date-modified आपके प्रश्न का उत्तर है? – sverre

+0

क्या आपने FileUtils.dirListByAscendingDate को आजमाया है? http://www.rgagnon.com/javadetails/java-0606.html – excanoe

+1

आपको लॉग फ़ाइलों में दिलचस्पी दिखाई देती है। इन्हें अक्सर इस तरह से नामित किया जाता है कि फ़ाइल नाम द्वारा लिक्सिकल सॉर्टिंग समय के साथ भी प्रकार की तरह होती है। –

उत्तर

35

संपादित करें: java8 में:

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

मैं, कुछ रोचक कोड, बहुत तुम क्या जरूरत के करीब पाया (यह पर एक नज़र रन कार्यान्वयन पर बस एक त्वरित है तुलनात्मक):

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; 
     } 
    } 

}); 

इसके अलावा आप इस पोस्ट को देख सकते हैं, देखें कि लड़के ने समस्या का हल कैसे किया: Best way to list files in Java, sorted by Date Modified?

+0

धन्यवाद - यह सही काम करता है! – Ralph

+1

आपका स्वागत है – sfrj

+1

हाय आप इसे उत्पन्न कर सकते हैं जिसका अर्थ यह होगा कि आप तुलना विधि में कास्टिंग हटा सकते हैं: Arrays.sort (फ़ाइलें, नया तुलनाकर्ता () {...}) –

0

मैं फ़ाइलों का संग्रह वापस पाने के लिए commons-io में फ़ाइल उपयोग का उपयोग करूंगा। मैं फिर एक कस्टम तुलनित्र लागू करेंगे। यह बहुत आसान होना चाहिए।

संबंधित मुद्दे

 संबंधित मुद्दे