Java如何根据文件的最后修改日期对文件进行排序?
本示例演示了如何使用ApacheCommonsIOLastModifiedFileComparator类根据文件的最后修改日期以升序和降序对文件进行排序。此类中定义了两个比较器,分别是LASTMODIFIED_COMPARATOR和LASTMODIFIED_REVERSE。
package org.nhooo.example.commons.io; import static org.apache.commons.io.comparator.LastModifiedFileComparator.*; import java.io.File; import java.util.Arrays; public class FileSortLastModified { public static void main(String[] args) { File dir = new File(System.getProperty("user.home")); File[] files = dir.listFiles(); if (files != null) { //根据文件的末尾升序对文件进行排序 //修改日期。 System.out.println("Ascending order."); Arrays.sort(files, LASTMODIFIED_COMPARATOR); FileSortLastModified.displayFileOrder(files); System.out.println("------------------------------------"); //根据文件的末尾以降序对文件进行排序 //修改日期。 System.out.println("Descending order."); Arrays.sort(files, LASTMODIFIED_REVERSE); FileSortLastModified.displayFileOrder(files); } } private static void displayFileOrder(File[] files) { for (File file : files) { System.out.printf("%2$td/%2$tm/%2$tY - %s%n", file.getName(), file.lastModified()); } } }
这是代码片段产生的示例结果:
Ascending order. 15/12/2016 - ntuser.dat.LOG1 15/12/2016 - ntuser.ini 15/12/2016 - .m2 18/12/2016 - Contacts 22/12/2016 - Videos 01/01/2017 - VirtualBox VMs 02/01/2017 - Desktop 02/01/2017 - Documents ------------------------------------------ Descending order. 02/01/2017 - Documents 02/01/2017 - Desktop 01/01/2017 - VirtualBox VMs 22/12/2016 - Videos 18/12/2016 - Contacts 15/12/2016 - .m2 15/12/2016 - ntuser.ini 15/12/2016 - ntuser.dat.LOG1
Maven依赖
<!-- http://repo1.maven.org/maven2/commons-io/commons-io/2.6/commons-io-2.6.jar --> <dependency> <groupId>commons-io</groupId> <artifactId>commons-io</artifactId> <version>2.6</version> </dependency>