2012-04-20 134 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

相关问题