2012-04-20 132 views
2

我想根據創建日期來讀取最新的10個文件。java:根據創建日期對文件進行排序

我試過這段代碼,但它不工作,我的意思是,當我添加新文件時,它不會在輸出中顯示新的文件名。

import java.io.File; 
import java.util.Arrays; 
import java.util.Comparator; 

public class Main { 
    public static void main(String[] args) { 
     File inboxDir = new File("D:\\SPOTO"); 
     File[] files = inboxDir.listFiles(); 
     Arrays.sort(files, new Comparator() 
     { 
     public int compare(Object o1, Object o2) { 
     return new Long(((File)o1).lastModified()).compareTo(new Long(((File) o2).lastModified())); 
     } 

     }); 


     for(int i=0;i<10;i++) 
     { 
      System.out.println(files[i].getName()); 
     } 


    } 
} 

我甚至嘗試與Apache公地IO,但不工作或者(指不顯示新的文件時,在該目錄中創建新文件)

這是我的Apache公地IO版本

import org.apache.commons.io.comparator.LastModifiedFileComparator; 

import java.io.File; 
import java.util.Arrays; 

public class Main { 
    public static void main(String[] args) { 
     File dir = new File("c:\\"); 
     File[] files = dir.listFiles(); 

     Arrays.sort(files, LastModifiedFileComparator.LASTMODIFIED_COMPARATOR); 
     for (int i = 0; i < files.length; i++) { 
      File file = files[i]; 
      System.out.printf("File %s - %2$tm %2$te,%2$tY%n= ", file.getName(), 
        file.lastModified()); 
     } 

     Arrays.sort(files, LastModifiedFileComparator.LASTMODIFIED_REVERSE); 
     for (int i = 0; i < files.length; i++) { 
      File file = files[i]; 
      System.out.printf("File %s - %2$tm %2$te,%2$tY%n= ", file.getName(), 
        file.lastModified()); 
     } 
    } 
} 
+1

您確定「D:\\ SPOTO」中有文件嗎? .listfiles()不遞歸遍歷子目錄。 – aglassman 2012-04-20 16:31:39

回答

2

嘗試翻轉比較順序:

return new Long(((File)o2).lastModified()).compareTo(new Long(((File) o1).lastModified())); 

這適用於本地剛纔我測試。

2

至少在常規的Java版本中,您會按照錯誤的(升序)順序比較文件。我乘以-1的結果,我看到最新的文件第一:

return -1* (new Long(((File)o1).lastModified()).compareTo(new Long(((File) o2).lastModified()))); 

隨着時間戳,較大的一個對應於較新的文件。

+0

似乎更清楚地做比較正確,而不是繁殖:/ – 2012-04-20 16:33:10

+0

這只是試用它的最快方法。比較器需要一個整數作爲返回。 – 2012-04-20 16:34:21

+0

謝謝Alex,JavaKungFu – user1253847 2012-04-20 18:46:42

相關問題